コード例 #1
0
        public UniversalFeatsGump( PlayerMobile viewer, PlayerMobile viewed, List<FeatList> previous, FeatList current, FeatList viewing, int scroll )
            : base(0, 0)
        {
            if( viewer == null || viewer.Deleted || viewed == null || viewed.Deleted )
                return;

            InitialSetup( viewer, viewed, previous, current, viewing, scroll );
            AddBackgroundAndImages();
            AddMainMenu();
            AddPurchaseMenu();
        }
コード例 #2
0
        public bool HasRequiredArcanas( FeatList[] requirements )
        {
            if( Caster == null || !( Caster is PlayerMobile ) )
                return false;

            PlayerMobile pm = (PlayerMobile)Caster;
            bool failed = false;

            for( int i = 0; i < requirements.Length; i++ )
            {
                if( pm.Feats.GetFeatLevel( requirements[i] ) < 3 )
                {
                    StringBuilder arcana = new StringBuilder();
                    arcana.Append( requirements[i].ToString() );

                    if( arcana.ToString().EndsWith( "II" ) )
                        arcana.Insert( arcana.Length - 2, " " );

                    else
                        arcana.Insert( arcana.Length - 1, " " );

                    pm.SendMessage( "You need the 3rd level of " + arcana + " in order to cast this spell." );
                    failed = true;
                }
            }

            return !failed;
        }
コード例 #3
0
        private async Task ExecuteLoadItemsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            try
            {
                var chars = await App.Database.GetCharactersList();

                var character = chars[0];

                //СЛОТЫ
                var slotList = new FeatList();
                //var slots = CreateCharacter.GetClericSlots(character.Level);
                var slots = CreateCharacter.GetPaladinSlots();
                foreach (var slot in slots)
                {
                    slotList.Add(new Feat()
                    {
                        Title = slot.Title, Description = slot.Amount + "/" + slot.Amount
                    });
                }
                slotList.Heading = "Слоты заклинаний:";

                var domainList = new FeatList()
                {
                    new Feat()
                    {
                        Title = "Наложение рук", Description = character.Level * 5 + "/" + character.Level * 5, Text = "Ваше благословенное касание может лечить раны. У вас есть запас целительной силы, который восстанавливается после продолжительного отдыха. При помощи этого запаса вы можете восстанавливать количество хитов, равное уровню паладина, умноженному на 5.\n" +
                                                                                                                       "Вы можете действием коснуться существа и, зачерпнув силу из запаса, восстановить количество хитов этого существа на любое число, вплоть до максимума, оставшегося в вашем запасе.\n" +
                                                                                                                       "В качестве альтернативы, вы можете потрать 5 хитов из вашего запаса хитов для излечения цели от одной болезни или одного действующего на неё яда. Вы можете устранить несколько эффектов болезни и ядов одним использованием Наложения рук, тратя хиты отдельно для каждого эффекта.\n" +
                                                                                                                       "Это умение не оказывает никакого эффекта на нежить и конструктов."
                    },
                    new Feat()
                    {
                        Title = "Божественная кара", DescriptionVisible = false, Text = "Начиная со 2 уровня, если вы попадаете по существу атакой рукопашным оружием, вы можете потратить одну ячейку заклинания любого своего класса для причинения цели урона излучением, который добавится к урону от оружия. Дополнительный урон равен 2к8 за ячейку 1 уровня, плюс 1к8 за каждый уровень ячейки выше первого, до максимума 5к8. Урон увеличивается на 1к8, если цель — нежить или исчадие."
                    },
                    new Feat()
                    {
                        Title = "Божественное здоровье", DescriptionVisible = false, Text = "Начиная с 3 уровня божественная магия, текущая через вас, даёт вам иммунитет к болезням."
                    },
                    new Feat()
                    {
                        Title = "Аура защиты", DescriptionVisible = false, Text = "Начиная с 6 уровня, если вы или дружественное существо в пределах 10 футов от вас должны совершить спасбросок, это существо получает бонус к спасброску, равный модификатору вашей Харизмы (минимальный бонус +1). Вы должны находиться в сознании, чтобы предоставлять этот бонус. На 18 уровне дистанция этой ауры увеличивается до 30 футов."
                    }
                };
                domainList.Heading = "Паладин:";

                var clericList = new FeatList()
                {
                    new Feat()
                    {
                        Title = "Обет вражды", TypeTop = true, Text = "Вы можете бонусным действием произнести слова обета вражды по отношению к существу, которое вы можете видеть, и которое находится в пределах 10 футов от вас, используя Божественный канал. В течение 1 минуты, пока его хиты не опускаются до 0, или оно не потеряет сознание, вы совершаете броски атаки по нему с превосходством."
                    },
                    new Feat()
                    {
                        Title = "Порицание врага", TypeTop = true, Text = "Вы действием демонстрируете свой священный символ и произносите обличающую молитву, используя Божественный канал. Выберите одно существо в пределах 60 футов, которое можете видеть. Это существо должно совершить спасбросок Мудрости, если не обладает иммунитетом к испугу. Исчадия и нежить совершают этот спасбросок с помехой. Если спасбросок провален, существо становится испуганным на 1 минуту, или пока не получит урон. Пока существо испугано, его скорость равна 0, и оно не получает никаких бонусов к скорости. Если спасбросок был успешен, скорость существа на 1 минуту, или пока оно не получает урон, уменьшается вдвое."
                    }
                };
                clericList.Heading     = "Божественный канал(КО):";
                clericList.Description = "1/1";

                var raceList = new FeatList()
                {
                    new Feat()
                    {
                        Title = "Непоколебимая стойкость", Description = "1/1", Text = "Если ваши хиты опустились до нуля, но вы при этом не убиты, ваши хиты вместо этого опускаются до 1. Вы не можете использовать эту способность снова, пока не завершите длительный отдых."
                    },
                    new Feat()
                    {
                        Title = "Свирепые атаки", DescriptionVisible = false, Text = "Если вы совершили критическое попадание рукопашной атакой оружием, вы можете добавить к урону ещё одну кость урона оружия."
                    },
                    new Feat()
                    {
                        Title = "Тёмное зрение", DescriptionVisible = false, Text = "Благодаря орочьей крови, вы обладаете превосходным зрением в темноте и при тусклом освещении. На расстоянии в 60 футов вы при тусклом освещении можете видеть так, как будто это яркое освещение, и в темноте так, как будто это тусклое освещение. В темноте вы не можете различать цвета, только оттенки серого."
                    }
                };
                raceList.Heading = "Расовые черты:";

                var systemFeat = new FeatList()
                {
                    new Feat()
                    {
                        Title = "Мастер щитов", DescriptionVisible = false, Text = "Вы используете щиты не только для обороны, но и для нападения. Вы получаете следующие преимущества, когда используете щит:\n" +
                                                                                   "• Если вы в свой ход совершаете действие Атака, вы можете бонусным действием попытаться оттолкнуть щитом существо, находящееся в пределах 5 футов от вас.\n" +
                                                                                   "• Если вы не выведены из строя, вы можете добавлять бонус к КД от щита ко всем спасброскам Ловкости, совершённым от заклинаний и прочих вредоносных эффектов, нацеленных только на вас.\n" +
                                                                                   "• Если вы подвергаетесь действию эффекта, позволяющего совершить спасбросок Ловкости для получения половины урона, вы можете реакцией вообще не получить урон в случае успешного спасброска, выставив щит между собой и источником эффекта."
                    },
                    new Feat()
                    {
                        Title = "Устойчивый (Вын.)", DescriptionVisible = false, Text = "Выберите одну характеристику. Вы получаете следующие преимущества:\n" +
                                                                                        "• Увеличьте значение выбранной характеристики на 1, при максимуме 20.\n" +
                                                                                        "• Вы получаете владение спасбросками этой характеристики."
                    }
                };
                systemFeat.Heading = "Черты:";

                var healingList = new FeatList()
                {
                    new Feat()
                    {
                        Title = "Использований: ", Description = character.HitDices + "/" + character.HitDices
                    }
                };
                healingList.Heading = "Кубики хитов:";

                var list = new ObservableCollection <FeatList>()
                {
                    slotList,
                    domainList,
                    clericList,
                    raceList,
                    systemFeat,
                    healingList
                };

                ListOfFeats = list;
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                IsBusy = false;
            }
        }
コード例 #4
0
 public void InitialSetup( PlayerMobile viewer, PlayerMobile viewed, List<FeatList> previous, FeatList current, FeatList viewing, int scroll )
 {
     m_Viewer = viewer;
     m_Viewed = viewed;
     m_Previous = previous;
     m_Current = current;
     m_Viewing = viewing;
     m_Scroll = Math.Max( 0, scroll );
     Closable = true;
     Disposable = true;
     Dragable = true;
     Resizable = false;
 }
コード例 #5
0
        public override void OnResponse( NetState sender, RelayInfo info )
        {
            if( sender.Mobile == null || m_Viewed == null )
                return;

            BaseFeat skill = GetActiveFeat();
            bool freeRemoval = (m_Viewer.AccessLevel > AccessLevel.Player || (m_Viewed.Forging || m_Viewed.Reforging));

            switch( info.ButtonID )
            {
                case (int)Buttons.ScrollUp: m_Scroll -= 1; break;
                case (int)Buttons.ScrollDown: m_Scroll += 1; break;
                case (int)Buttons.Skill1: skill.AttemptPurchase( m_Viewed, 1, freeRemoval ); break;
                case (int)Buttons.Skill2: skill.AttemptPurchase( m_Viewed, 2, freeRemoval ); break;
                case (int)Buttons.Skill3: skill.AttemptPurchase( m_Viewed, 3, freeRemoval ); break;
                case (int)Buttons.Previous: m_Current = m_Previous[m_Previous.Count - 1]; m_Previous.Remove( m_Current ); m_Scroll = 0; break;
                case (int)Buttons.PickSlave1: m_Viewing = GetIndex(0); break;
                case (int)Buttons.PickSlave2: m_Viewing = GetIndex(1); break;
                case (int)Buttons.PickSlave3: m_Viewing = GetIndex(2); break;
                case (int)Buttons.PickSlave4: m_Viewing = GetIndex(3); break;
                case (int)Buttons.PickSlave5: m_Viewing = GetIndex(4); break;
                case (int)Buttons.PickMaster: m_Viewing = m_Current; break;
                case (int)Buttons.Next1: m_Previous.Add( m_Current ); m_Current = GetIndex(0); m_Viewing = m_Current; m_Scroll = 0; break;
                case (int)Buttons.Next2: m_Previous.Add( m_Current ); m_Current = GetIndex(1); m_Viewing = m_Current; m_Scroll = 0; break;
                case (int)Buttons.Next3: m_Previous.Add( m_Current ); m_Current = GetIndex(2); m_Viewing = m_Current; m_Scroll = 0; break;
                case (int)Buttons.Next4: m_Previous.Add( m_Current ); m_Current = GetIndex(3); m_Viewing = m_Current; m_Scroll = 0; break;
                case (int)Buttons.Next5: m_Previous.Add( m_Current ); m_Current = GetIndex(4); m_Viewing = m_Current; m_Scroll = 0; break;
                default: break;
            }

            if( info.ButtonID > 0 )
                m_Viewer.SendGump( new UniversalFeatsGump(m_Viewer, m_Viewed, m_Previous, m_Current, m_Viewing, m_Scroll) );
        }
コード例 #6
0
ファイル: Feats.cs プロジェクト: justdanofficial/khaeros
        public static BaseFeat ConvertFeatListToFeatObject( FeatList list )
        {
            if( Catalogue.ContainsKey(list) )
                return Catalogue[list];

            return null;
        }
コード例 #7
0
        public int GetCheckBox( FeatList skill )
        {
            if( m_Viewing == FeatList.None )
                return (skill == m_Current ? m_SelectedCheckBox : m_UnselectedCheckBox);

            return (skill == m_Viewing ? m_SelectedCheckBox : m_UnselectedCheckBox);
        }
コード例 #8
0
ファイル: Feats.cs プロジェクト: justdanofficial/khaeros
        public void SetFeatLevel( FeatList feat, int level, PlayerMobile owner )
        {
            if( level < 1 )
            {
                if( FeatDictionary.ContainsKey(feat) )
                {
                    FeatDictionary[feat].Level = level;

                    if( owner != null )
                        FeatDictionary[feat].OnLevelChanged( owner );
                }
            }

            else
            {
                if( !FeatDictionary.ContainsKey(feat) )
                {
                    Type type = Catalogue[feat].GetType();
                    BaseFeat featClass = (BaseFeat)Activator.CreateInstance( type );
                    FeatDictionary.Add( feat, featClass );
                }

                FeatDictionary[feat].Level = level;

                if( owner != null )
                    FeatDictionary[feat].OnLevelChanged( owner );
            }
        }
コード例 #9
0
ファイル: Feats.cs プロジェクト: justdanofficial/khaeros
 public FeatTarget( FeatList feat, int level, bool setting )
     : base(30, false, TargetFlags.None)
 {
     m_Feat = feat;
     m_Level = level;
     m_Setting = setting;
 }
コード例 #10
0
ファイル: Feats.cs プロジェクト: justdanofficial/khaeros
 //Method to set a feat to a value. It will add the feat to the dictionary if it doesn't exist in it yet.
 public void SetFeatLevel( FeatList feat, int level )
 {
     SetFeatLevel( feat, level, null );
 }
コード例 #11
0
ファイル: Feats.cs プロジェクト: justdanofficial/khaeros
        //Method to get a feat value. It will return 0 if the feat doesn't exist in the dictionary.
        public int GetFeatLevel( FeatList feat )
        {
            if( !FeatDictionary.ContainsKey(feat) )
                return 0;

            return FeatDictionary[feat].Level;
        }
コード例 #12
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                case 161:
                    this.NumberOfItemsCookedRecently = reader.ReadInt();
                    this.CookingXpLastAwardedOn = reader.ReadDateTime();
                    goto case 160;
                case 160:
                    this.lastSecondWind = reader.ReadDateTime();
                    goto case 159;
                case 159:
                    {
                        this.lastCharge = reader.ReadDateTime();
                        this.chargeCooldown = reader.ReadInt();
                        goto case 158;
                    }
                case 158: SmithTesting = reader.ReadBool(); goto case 157;
                case 157: m_ConsecratedItems = reader.ReadInt(); goto case 156;
                case 156: m_CanBeFaithful = reader.ReadBool();goto case 155;
                case 155: m_HCWound = reader.ReadDateTime(); goto case 154;
                case 154: m_Maimings = reader.ReadInt(); goto case 153;

                case 153:
                {
                        m_CustomAvatarID1 = reader.ReadInt();
                        m_CustomAvatarID2 = reader.ReadInt();
                        m_CustomAvatarID3 = reader.ReadInt();
                        m_IsHardcore = reader.ReadBool(); goto case 152;

                }

                case 152: GroupInfo.Deserialize(reader, Group); goto case 151;
                case 151: m_IsApprentice = reader.ReadBool(); goto case 150;
                case 150: m_AvatarID = reader.ReadInt(); goto case 149;
                case 149:
                case 148:
                case 147:
                case 146:
                case 145:
                case 144:
                {
                    Disguise.Deserialize( reader );
                    MyDisguises.Deserialize( reader );
                    goto case 143;
                }
                case 143: m_GemHarvesting = reader.ReadBool(); goto case 142;
                case 142:
                {
                    m_CanBeThief = reader.ReadBool();
                    m_LastCottonFlaxHarvest = reader.ReadDateTime();
                    goto case 141;
                }
                case 141:
                case 140: m_CraftingSpecialization = reader.ReadString(); goto case 139;
                case 139: m_Forging = reader.ReadBool(); goto case 138;
                case 138: m_ImperialGuard = reader.ReadBool(); goto case 137;
                case 137: m_ExtraCPRewards = reader.ReadInt(); goto case 136;
                case 136: m_EmptyBankBoxOn = reader.ReadDateTime(); goto case 135;
                case 135: m_OldMapChar = reader.ReadBool(); goto case 134;
                case 134:
                {
                    int guilds = reader.ReadInt();

                    for( int i = 0; i < guilds; i++ )
                    {
                        CustomGuildInfo guild = new CustomGuildInfo( reader );

                        if( guild != null && guild.GuildStone != null )
                            CustomGuilds.Add( guild.GuildStone, guild );
                    }

                    goto case 133;
                }
                case 133: m_ChosenDeity = (ChosenDeity)reader.ReadInt(); goto case 132;
                case 132: m_WikiConfig = reader.ReadString(); goto case 131;
                case 131:
                case 130:
                case 129:
                {
                    m_ReforgeLocation = reader.ReadPoint3D();
                    m_ReforgeMap = reader.ReadMap();
                    m_Reforging = reader.ReadBool();
                    m_ReforgesLeft = reader.ReadInt();
                    goto case 128;
                }
                case 128:
                case 127:
                {
                    m_Technique = reader.ReadString();
                    m_TechniqueLevel = reader.ReadInt();
                    m_MediumPieces = reader.ReadInt();
                    m_HeavyPieces = reader.ReadInt();
                    goto case 126;
                }
                case 126: m_VampSight = reader.ReadBool(); goto case 125;
                case 125: m_FreeForRP = reader.ReadBool(); goto case 124;
                case 124: m_VampSafety = reader.ReadBool(); goto case 123;
                case 123:
                {
                    m_LastTimeGhouled = reader.ReadDateTime();
                    m_YearOfDeath = reader.ReadInt();
                    m_MonthOfDeath = reader.ReadInt();
                    m_DayOfDeath = reader.ReadInt();
                    m_IsVampire = reader.ReadBool();
                    m_MaxBPs = reader.ReadInt();
                    m_BPs = reader.ReadInt();
                    m_AutoVampHeal = reader.ReadBool();

                    goto case 122;
                }
                case 122:
                case 121: m_LogMsgs = reader.ReadBool(); goto case 120;
                case 120: m_PureDodge = reader.ReadBool(); goto case 119;
                case 119: m_Tents = reader.ReadStrongItemList(); goto case 118;
                case 118: m_CraftContainer = (Container)reader.ReadItem(); goto case 117;
                case 117:
                case 116: m_SpellBook = (CustomSpellBook)reader.ReadItem(); goto case 115;
                case 115:
                case 114:
                {
                    CustomGuildInfo test = null;

                    if( version < 134 )
                        test = new CustomGuildInfo( reader );

                    goto case 113;
                }
                case 113:
                case 112:
                case 111:
                case 110:
                case 109:
                {
                    m_CurrentCommand = (SongList)reader.ReadInt();
                    goto case 108;
                }
                case 108:
                {
                    m_SpeedHack = reader.ReadBool();
                    goto case 107;
                }
                case 107:
                {
                    m_LogoutTime = reader.ReadDateTime();
                    goto case 106;
                }
                case 106:
                {
                    m_FakeAge = reader.ReadString();
                    m_FakeLooks = reader.ReadString();
                    goto case 105;
                }
                case 105:
                {
                    this.NameMod = reader.ReadString();
                    m_AutoPicking = reader.ReadBool();
                    goto case 104;
                }
                case 104: goto case 103;
                case 103:
                {
                    m_SmoothPicking = reader.ReadBool();
                    goto case 102;
                }
                case 102:
                {
                    m_HasStash = reader.ReadBool();
                    goto case 101;
                }
                case 101:
                {
                    m_FakeHair = reader.ReadInt();
                    m_FakeHairHue = reader.ReadInt();
                    m_FakeFacialHair = reader.ReadInt();
                    m_FakeFacialHairHue = reader.ReadInt();
                    m_FakeHue = reader.ReadInt();
                    m_FakeRPTitle = reader.ReadString();
                    m_FakeTitlePrefix = reader.ReadString();
                    goto case 100;
                }
                case 100: goto case 99;
                case 99: goto case 98;
                case 98: goto case 97;
                case 97: goto case 96;
                case 96:
                {
                    m_FixedRun = reader.ReadBool();
                    goto case 95;
                }
                case 95:
                {
                    m_LightPieces = reader.ReadInt();
                    goto case 94;
                }
                case 94:
                {
                    m_ArmourPieces = reader.ReadInt();
                    goto case 93;
                }
                case 93:
                {
                    m_LightPenalty = reader.ReadInt();
                    m_MediumPenalty = reader.ReadInt();
                    m_HeavyPenalty = reader.ReadInt();
                    goto case 92;
                }
                case 92: goto case 91;
                case 91:
                {
                    m_FixedRage = reader.ReadBool();
                    goto case 90;
                }

                case 90: goto case 89;
                case 89: goto case 88;
                case 88: goto case 87;
                case 87: goto case 86;

                case 86:
                {
                    m_FixedReflexes = reader.ReadBool();
                    goto case 85;
                }
                case 85:
                {
                    m_FixedStyles = reader.ReadBool();
                    goto case 84;
                }
                case 84:
                {
                    m_NextMending = reader.ReadDateTime();
                    goto case 83;
                }
                case 83:
                {
                    m_FixedStatPoints = reader.ReadBool();
                    goto case 82;
                }
                case 82:
                {
                    m_XPFromCrafting = reader.ReadBool();
                    m_XPFromKilling = reader.ReadBool();
                    goto case 81;
                }
                case 81:
                {
                    m_HarvestedCrops = reader.ReadInt();
                    m_NextHarvestAllowed = reader.ReadDateTime();
                    goto case 80;
                }
                case 80:
                {
                    m_Spar = reader.ReadBool();
                    goto case 79;
                }
                case 79:
                {
                    m_HideStatus = reader.ReadBool();
                    goto case 78;
                }
                case 78:
                {
                    m_DayOfBirth = reader.ReadString();
                    m_MonthOfBirth = reader.ReadString();
                    m_YearOfBirth = reader.ReadString();
                    goto case 77;
                }
                case 77:
                {
                    m_AlyrianGuard = reader.ReadBool();
                    m_AzhuranGuard = reader.ReadBool();
                    m_KhemetarGuard = reader.ReadBool();
                    m_MhordulGuard = reader.ReadBool();
                    m_TyreanGuard = reader.ReadBool();
                    m_VhalurianGuard = reader.ReadBool();
                    goto case 76;
                }
                case 76:
                {
                    m_HearAll = reader.ReadInt();
                    goto case 75;
                }
                case 75:
                {
                    m_Friendship = new Friendship( reader );
                    goto case 74;
                }
                case 74:
                {
                    m_CPCapOffset = reader.ReadInt();
                    m_CPSpent = reader.ReadInt();
                    goto case 73;
                }
                case 73:
                {
                    m_Description2 = reader.ReadString();
                    m_Description3 = reader.ReadString();
                    goto case 72;
                }
                case 72:
                {
                    m_NextBirthday = reader.ReadDateTime();
                    m_MaxAge = reader.ReadInt();
                    goto case 71;
                }
                case 71:
                {
                    m_Age = reader.ReadInt();
                    goto case 70;
                }
                case 70:
                {
                    m_LoggedOutPets = reader.ReadStrongMobileList();
                    goto case 69;
                }
                case 69:
                {
                    m_RecreateXP = reader.ReadInt();
                    m_RecreateCP = reader.ReadInt();
                    goto case 68;
                }
                case 68:
                {
                    m_LastOffenseToNature = reader.ReadDateTime();
                    goto case 66;
                }

                case 66:
                {
                    Mobile mob = null;

                    if( version < 92 )
                        mob = reader.ReadMobile();

                    goto case 65;
                }

                case 65:
                {
                    m_LastDonationLife = reader.ReadDateTime();
                    goto case 64;
                }

                case 64:
                {
                    m_Lives = reader.ReadInt();
                    goto case 63;
                }

                case 63:
                {
                    m_AllyList = reader.ReadStrongMobileList();
                    goto case 62;
                }

                case 62:
                {
                    m_Height = reader.ReadInt();
                    m_Weight = reader.ReadInt();
                    goto case 61;
                }

                case 61:
                {
                    m_NextAllowance = reader.ReadDateTime();
                    goto case 60;
                }

                case 60:
                {
                    m_Backgrounds = new Backgrounds( reader );
                    goto case 59;
                }

                case 59:
                {
                    m_Description = reader.ReadString();
                    goto case 58;
                }

                case 58:
                {
                    m_Masterwork = new Masterwork( reader );
                    goto case 57;
                }

                case 57:
                {
                    m_RacialResources = new RacialResources( reader );
                    goto case 56;
                }

                case 56:
                {
                    m_KnownLanguages = new KnownLanguages( reader );
                    goto case 55;
                }

                case 55:
                {
                    m_SpokenLanguage = (KnownLanguage)reader.ReadInt();
                    goto case 54;
                }

                case 54:
                {
                    m_RPTitle = reader.ReadString();
                    m_TitlePrefix = reader.ReadString();
                    goto case 53;
                }

                case 53:
                {
                    m_FocusedShot = reader.ReadInt();
                    m_SwiftShot = reader.ReadInt();
                    goto case 52;
                }

                case 52:
                {
                    m_WeaponSpecialization = reader.ReadString();
                    m_SecondSpecialization = reader.ReadString();
                    goto case 51;
                }

                case 51:
                {
                    m_CombatStyles = new CombatStyles( reader );
                    m_SearingBreath = reader.ReadInt();
                    m_SwipingClaws = reader.ReadInt();
                    m_TempestuousSea = reader.ReadInt();
                    m_SilentHowl = reader.ReadInt();
                    m_ThunderingHooves = reader.ReadInt();
                    m_VenomousWay = reader.ReadInt();
                    goto case 50;
                }

                case 50:
                {
                    m_RageHits = reader.ReadInt();
                    m_RageFeatLevel = reader.ReadInt();
                    goto case 49;
                }

                case 49:
                {
                    int test = reader.ReadInt();
                    goto case 48;
                }

                case 48:
                {
                    m_LastChargeStep = reader.ReadDateTime();
                    goto case 47;
                }

                case 47:
                {
                    m_FormerDirection = (Direction)reader.ReadInt();
                    m_ChargeSteps = reader.ReadInt();
                    goto case 46;
                }

                case 46:
                {
                   m_Trample = reader.ReadBool();
                   goto case 45;
                }

                case 45:
                {
                    m_FlurryOfBlows = reader.ReadInt();
                    goto case 44;
                }

                case 44:
                {
                    m_FocusedAttack = reader.ReadInt();
                    m_FightingStance = (FeatList)reader.ReadInt();
                    goto case 43;
                }

                case 43:
                {
                    m_Intimidated = reader.ReadInt();
                    goto case 42;
                }

                case 42:
                {
                    m_HasHuntingHoundBonus = reader.ReadBool();
                    goto case 41;
                }

                case 41:
                {
                    m_HuntingHound = reader.ReadMobile();
                    m_FreeToUse = reader.ReadBool();
                    goto case 40;
                }

                case 40:
                {
                    m_Informants = new Informants( reader );
                    goto case 39;
                }

                case 39:
                {
                    m_EscortPrisoner = reader.ReadMobile();
                    goto case 38;
                }

                case 38:
                {
                    m_CanBeReplaced = reader.ReadBool();
                    goto case 37;
                }

                case 37:
                {
                    m_BackToBack = reader.ReadBool();
                    goto case 36;
                }

                case 36:
                {
                    m_Crippled = reader.ReadBool();
                    goto case 35;
                }

                case 35:
                {
                    m_CleaveAttack = reader.ReadBool();
                    goto case 34;
                }

                case 34: goto case 33;

                case 33:
                {
                    goto case 32;
                }

                case 32:
                {
                    m_SpecialAttack = (FeatList)reader.ReadInt();
                    m_OffensiveFeat = (FeatList)reader.ReadInt();
                    goto case 31;
                }

                case 31:
                {
                    m_Feats = new Feats( reader );
                    goto case 30;
                }

                case 30:
                {
                    m_Subclass = (Subclass)reader.ReadInt();
                    m_Advanced = (Advanced)reader.ReadInt();
                    goto case 29;
                }
                case 29:
                {
                    m_CanBeMage = reader.ReadBool();
                    goto case 28;
                }

                case 28:
                {
                    m_Level = reader.ReadInt();
                    m_XP = reader.ReadInt();
                    m_NextLevel = reader.ReadInt();
                    m_CP = reader.ReadInt();
                    goto case 27;
                }

                case 27:
                {
                    m_StatPoints = reader.ReadInt();
                    m_SkillPoints = reader.ReadInt();
                    m_FeatSlots = reader.ReadInt();
                    goto case 26;
                }
                case 26:
                {
                    m_Class = (Class)reader.ReadInt();
                    m_Nation = (Nation)reader.ReadInt();
                    goto case 25;
                }
                case 25:
                {
                    int recipeCount = reader.ReadInt();

                    if( recipeCount > 0 )
                    {
                        m_AcquiredRecipes = new Dictionary<int, bool>();

                        for( int i = 0; i < recipeCount; i++ )
                        {
                            int r = reader.ReadInt();
                            if( reader.ReadBool() )	//Don't add in recipies which we haven't gotten or have been removed
                                m_AcquiredRecipes.Add( r, true );
                        }
                    }
                    goto case 24;
                }
                case 24:
                {
                    m_LastHonorLoss = reader.ReadDeltaTime();
                    goto case 23;
                }
                case 23:
                {
                    m_ChampionTitles = new ChampionTitleInfo( reader );
                    goto case 22;
                }
                case 22:
                {
                    m_LastValorLoss = reader.ReadDateTime();
                    goto case 21;
                }
                case 21:
                {
                    m_ToTItemsTurnedIn = reader.ReadEncodedInt();
                    m_ToTTotalMonsterFame = reader.ReadInt();
                    goto case 20;
                }
                case 20:
                {
                    m_AllianceMessageHue = reader.ReadEncodedInt();
                    m_GuildMessageHue = reader.ReadEncodedInt();

                    goto case 19;
                }
                case 19:
                {
                    int rank = reader.ReadEncodedInt();
                    int maxRank = Guilds.RankDefinition.Ranks.Length -1;
                    if( rank > maxRank )
                        rank = maxRank;

                    m_GuildRank = Guilds.RankDefinition.Ranks[rank];
                    m_LastOnline = reader.ReadDateTime();
                    goto case 18;
                }
                case 18:
                {
                    m_SolenFriendship = (SolenFriendship) reader.ReadEncodedInt();

                    goto case 17;
                }
                case 17: // changed how DoneQuests is serialized
                case 16:
                {
                    m_Quest = QuestSerializer.DeserializeQuest( reader );

                    if ( m_Quest != null )
                        m_Quest.From = this;

                    int count = reader.ReadEncodedInt();

                    if ( count > 0 )
                    {
                        m_DoneQuests = new List<QuestRestartInfo>();

                        for ( int i = 0; i < count; ++i )
                        {
                            Type questType = QuestSerializer.ReadType( QuestSystem.QuestTypes, reader );
                            DateTime restartTime;

                            if ( version < 17 )
                                restartTime = DateTime.MaxValue;
                            else
                                restartTime = reader.ReadDateTime();

                            m_DoneQuests.Add( new QuestRestartInfo( questType, restartTime ) );
                        }
                    }

                    m_Profession = reader.ReadEncodedInt();
                    goto case 15;
                }
                case 15:
                {
                    m_LastCompassionLoss = reader.ReadDeltaTime();
                    goto case 14;
                }
                case 14:
                {
                    m_CompassionGains = reader.ReadEncodedInt();

                    if ( m_CompassionGains > 0 )
                        m_NextCompassionDay = reader.ReadDeltaTime();

                    goto case 13;
                }
                case 13: // just removed m_PayedInsurance list
                case 12:
                {
                    m_BOBFilter = new Engines.BulkOrders.BOBFilter( reader );
                    goto case 11;
                }
                case 11:
                {
                    if ( version < 13 )
                    {
                        List<Item> payed = reader.ReadStrongItemList();

                        for ( int i = 0; i < payed.Count; ++i )
                            payed[i].PayedInsurance = true;
                    }

                    goto case 10;
                }
                case 10:
                {
                    if ( reader.ReadBool() )
                    {
                        m_HairModID = reader.ReadInt();
                        m_HairModHue = reader.ReadInt();
                        m_BeardModID = reader.ReadInt();
                        m_BeardModHue = reader.ReadInt();

                        // We cannot call SetHairMods( -1, -1 ) here because the items have not yet loaded
                        Timer.DelayCall( TimeSpan.Zero, new TimerCallback( RevertHair ) );
                    }

                    goto case 9;
                }
                case 9:
                {
                    SavagePaintExpiration = reader.ReadTimeSpan();

                    if ( SavagePaintExpiration > TimeSpan.Zero )
                    {
                        BodyMod = ( Female ? 184 : 183 );
                        HueMod = 0;
                    }

                    goto case 8;
                }
                case 8:
                {
                    m_NpcGuild = (NpcGuild)reader.ReadInt();
                    m_NpcGuildJoinTime = reader.ReadDateTime();
                    m_NpcGuildGameTime = reader.ReadTimeSpan();
                    goto case 7;
                }
                case 7:
                {
                    m_PermaFlags = reader.ReadStrongMobileList();
                    goto case 6;
                }
                case 6:
                {
                    NextTailorBulkOrder = reader.ReadTimeSpan();
                    goto case 5;
                }
                case 5:
                {
                    NextSmithBulkOrder = reader.ReadTimeSpan();
                    goto case 4;
                }
                case 4:
                {
                    m_LastJusticeLoss = reader.ReadDeltaTime();
                    m_JusticeProtectors = reader.ReadStrongMobileList();
                    goto case 3;
                }
                case 3:
                {
                    m_LastSacrificeGain = reader.ReadDeltaTime();
                    m_LastSacrificeLoss = reader.ReadDeltaTime();
                    m_AvailableResurrects = reader.ReadInt();
                    goto case 2;
                }
                case 2:
                {
                    m_Flags = (PlayerFlag)reader.ReadInt();
                    goto case 1;
                }
                case 1:
                {
                    m_LongTermElapse = reader.ReadTimeSpan();
                    m_ShortTermElapse = reader.ReadTimeSpan();
                    m_GameTime = reader.ReadTimeSpan();

                    if (version < 147) m_Crimes = reader.ReadInt();
                    //CrimesList
                    if (version < 148)
                    {
                        m_CrimesList = new Dictionary<Mobiles.Nation, int>();
                        m_CrimesList.Add(Nation.Alyrian, 0);
                        m_CrimesList.Add(Nation.Azhuran, 0);
                        m_CrimesList.Add(Nation.Khemetar, 0);
                        m_CrimesList.Add(Nation.Mhordul, 0);
                        m_CrimesList.Add(Nation.Tyrean, 0);
                        m_CrimesList.Add(Nation.Vhalurian, 0);
                        m_CrimesList.Add(Nation.Imperial, 0);
                        m_CrimesList.Add(Nation.Sovereign, 0);
                        m_CrimesList.Add(Nation.Society, 0);

                        int count = reader.ReadInt();
                        for (int i = 0; i < count; i++)
                        {
                            Nation n = (Nation)reader.ReadInt();
                            int c = reader.ReadInt();
                            //m_CrimesList.Add(n, c);
                        }
                    }
                    else
                    {
                        m_CrimesList = new Dictionary<Mobiles.Nation, int>();
                        int count = reader.ReadInt();
                        for (int i = 0; i < count; i++)
                        {
                            Nation n = (Nation)reader.ReadInt();
                            int c = reader.ReadInt();
                            m_CrimesList.Add(n, c);
                        }
                    }

                    m_NextCriminalAct = reader.ReadDateTime();
                    m_CriminalActivity = reader.ReadBool();
                    m_Disguised = reader.ReadBool();
                    m_LastDisguiseTime = reader.ReadDateTime();

                    if (version < 149)
                    {
                        m_LastDeath = DateTime.Now - TimeSpan.FromDays(1);
                    }
                    else
                        m_LastDeath = reader.ReadDateTime();

                    goto case 0;
                }
                case 0:
                {
                    break;
                }
            }

            if (m_AvatarID == 0)
            m_AvatarID = 1076;

            //m_CrimesList.Add(Nation.Insularii, 0);

            if (m_CustomAvatarID1 == 0)
            m_CustomAvatarID1 = 1076;

            if (m_CustomAvatarID2 == 0)
            m_CustomAvatarID2 = 1076;

            if (m_CustomAvatarID3 == 0)
            m_CustomAvatarID3 = 1076;

            // Professions weren't verified on 1.0 RC0
            if ( !CharacterCreation.VerifyProfession( m_Profession ) )
                m_Profession = 0;

            if ( m_PermaFlags == null )
                m_PermaFlags = new List<Mobile>();

            if ( m_JusticeProtectors == null )
                m_JusticeProtectors = new List<Mobile>();

            if ( m_BOBFilter == null )
                m_BOBFilter = new Engines.BulkOrders.BOBFilter();

            if( m_GuildRank == null )
                m_GuildRank = Guilds.RankDefinition.Member;	//Default to member if going from older verstion to new version (only time it should be null)

            if( m_LastOnline == DateTime.MinValue && Account != null )
                m_LastOnline = ((Account)Account).LastLogin;

            if( m_ChampionTitles == null )
                m_ChampionTitles = new ChampionTitleInfo();

            List<Mobile> list = this.Stabled;

            for ( int i = 0; i < list.Count; ++i )
            {
                BaseCreature bc = list[i] as BaseCreature;

                if ( bc != null )
                    bc.IsStabled = true;
            }

            CheckAtrophies( this );

            /*if( Hidden )	//Hiding is the only buff where it has an effect that's serialized.
                AddBuff( new BuffInfo( BuffIcon.HidingAndOrStealth, 1075655 ) );*/

            if( this.Lives >= 0 && !this.Alive && this.Corpse != null )
                this.SendGump( new DeathGump( this, 15, this.Corpse ) );

            if( this.Backpack is ArmourBackpack )
            {
                ArmourBackpack pack = this.Backpack as ArmourBackpack;
                pack.Attributes.NightSight = 0;
            }

            if( version < 135 && AccessLevel < AccessLevel.GameMaster )
                OldMapChar = true;

            if( version < 141 )
            {
                FixSkillCost( FeatInfo.FeatCost.High, FeatInfo.FeatCost.Medium, Feats.GetFeatLevel(FeatList.Magery) );
                FixSkillCost( FeatInfo.FeatCost.High, FeatInfo.FeatCost.Low, Feats.GetFeatLevel(FeatList.Concentration) );
            }

            if( version < 145 )
            {
                m_TitlePrefix = null;
                m_RPTitle = "the Alyrian";

                if( m_Nation == Nation.Alyrian )
                    m_RPTitle = "the Alyrian";
                else if( m_Nation == Nation.Azhuran )
                    m_RPTitle = "the Azhuran";
                else if( m_Nation == Nation.Khemetar )
                    m_RPTitle = "the Khemetar";
                else if( m_Nation == Nation.Mhordul )
                    m_RPTitle = "the Mhordul";
                else if( m_Nation == Nation.Tyrean )
                    m_RPTitle = "the Tyrean";
                else if( m_Nation == Nation.Vhalurian )
                    m_RPTitle = "the Vhalurian";
            }

            m_Intimidated = 0;

            #region Removing Healing and HairStyling as feats and returning to players their CP
            if (Feats.GetFeatLevel(FeatList.Healing) == 3)
            {
                Feats.FeatDictionary[FeatList.Healing].AttemptRemoval(this, 3, true);
            }
            if (Feats.GetFeatLevel(FeatList.Healing) == 2)
            {
                Feats.FeatDictionary[FeatList.Healing].AttemptRemoval(this, 2, true);
            }
            if (Feats.GetFeatLevel(FeatList.Healing) == 1)
            {
                Feats.FeatDictionary[FeatList.Healing].AttemptRemoval(this, 1, true);
            }
            if (Feats.GetFeatLevel(FeatList.HairStyling) == 3)
            {
                Feats.FeatDictionary[FeatList.HairStyling].AttemptRemoval(this, 3, true);
            }
            if (Feats.GetFeatLevel(FeatList.HairStyling) == 2)
            {
                Feats.FeatDictionary[FeatList.HairStyling].AttemptRemoval(this, 2, true);
            }
            if (Feats.GetFeatLevel(FeatList.HairStyling) == 1)
            {
                Feats.FeatDictionary[FeatList.HairStyling].AttemptRemoval(this, 1, true);
            }
            #endregion

            m_Deserialized = true;
        }
コード例 #13
0
        public void ChangeManeuver( BaseCombatManeuver maneuver, FeatList feat, string message )
        {
            if( this.ManeuverBonusTimer != null )
            {
                this.SendMessage( 60, "You are still under the effect of a previously used maneuver." );
                return;
            }

            if( maneuver.GetType() == this.CombatManeuver.GetType() )
            {
                this.SendMessage( 60, "You hold back on the maneuver you had prepared." );
                DisableManeuver();
                return;
            }

            this.SendMessage( 60, message );
            this.CombatManeuver = maneuver;
            this.OffensiveFeat = feat;
            this.ManeuverAccuracyBonus = this.CombatManeuver.AccuracyBonus * this.CombatManeuver.FeatLevel;
            this.ManeuverDamageBonus = this.CombatManeuver.DamageBonus * this.CombatManeuver.FeatLevel;
            this.Send( new MobileStatus( this, this ) );
        }
コード例 #14
0
        // For feats that injure a player without knocking them out, and for deadly basecreatures.
        public void TryInjure(Mobile from, FeatList feat, int damage)
        {
            if (from is BaseCreature)
            {

            }
            else if (from is PlayerMobile)
            {

            }
        }