コード例 #1
0
        public void PostLoad(Character character)
        {
            //Apply character configuration
            Singleton.CharacterConfiguration.ApplyConfiguration(character);

            //Update strength
            character._status.MaxPAttack += (ushort)(2 * character.stats.BASE.strength);
            character._status.MinPAttack += (ushort)(1 * character.stats.BASE.strength);
            character._status.MaxHP += (ushort)(10 * character.stats.BASE.strength);
            character._status.BasePHitrate += (ushort)(1 * character.stats.BASE.dexterity);
            character._status.BasePCritrate += (ushort)(1 * character.stats.BASE.dexterity);
            character._status.MaxMAttack += (ushort)(6 * character.stats.BASE.intelligence);
            character._status.MinMAttack += (ushort)(3 * character.stats.BASE.intelligence);
            character._status.BaseRHitrate += (ushort)(1 * character.stats.BASE.intelligence);
            character._status.MaxRAttack += (ushort)(4 * character.stats.BASE.concentration);
            character._status.MinRAttack += (ushort)(2 * character.stats.BASE.concentration);
            character._status.BasePHitrate += (ushort)(2 * character.stats.BASE.concentration);

            //Apply skill information
            for (int i = 0; i < 16; i++)
            {
                Skill skill = character.SpecialSkills[i];
                if (skill != null && skill.info != null)
                {
                    i += (skill.info.special - 1);
                    if (skill.info.skilltype == 2)
                        Singleton.Additions.ApplyAddition(skill.info.addition, character);
                }
            }

            //Apply weapon information
            int WeaponIndex = (character.weapons.ActiveWeaponIndex == 1) ? character.weapons.SeconairyWeaponIndex : character.weapons.PrimaryWeaponIndex;
            if (WeaponIndex < character.weapons.UnlockedWeaponSlots)
            {
                Weapon CurrentWeapon = character.weapons[WeaponIndex];

                if (CurrentWeapon != null)
                    if (character.FindRequiredRootSkill(CurrentWeapon.Info.weapon_skill))
                    {
                        //Default battle additions
                        character._status.MaxWMAttack += (ushort)CurrentWeapon.Info.max_magic_attack;
                        character._status.MinWMAttack += (ushort)CurrentWeapon.Info.min_magic_attack;
                        character._status.MaxWPAttack += (ushort)CurrentWeapon.Info.max_short_attack;
                        character._status.MinWPAttack += (ushort)CurrentWeapon.Info.min_short_attack;
                        character._status.MaxWRAttack += (ushort)CurrentWeapon.Info.max_range_attack;
                        character._status.MinWRAttack += (ushort)CurrentWeapon.Info.min_range_attack;

                        //Reapplies alterstone additions
                        for (int i = 0; i < 8; i++)
                        {
                            uint addition = CurrentWeapon.Slots[i];
                            if (addition > 0)
                            {
                                Singleton.Additions.ApplyAddition(addition, character);
                            }
                        }

                        CurrentWeapon._active = 1;
                    }
                    else
                    {
                        CurrentWeapon._active = 0;
                    }
            }

            Common.Internal.CharacterCheckCapacities(character);
        }
コード例 #2
0
        /// <summary>
        /// Helper method that reappplies the weapon's effects.
        /// </summary>
        /// <remarks>
        /// Because this requires the skills to be loaded this
        /// method should be loaded after the character has finished
        /// loading.
        /// </remarks>
        /// <param name="character"></param>
        private void DoWeaponary(Character character)
        {
            int WeaponIndex = (character.weapons.ActiveWeaponIndex == 1) ? character.weapons.SeconairyWeaponIndex : character.weapons.PrimaryWeaponIndex;
            if (WeaponIndex < character.weapons.UnlockedWeaponSlots)
            {
                Weapon CurrentWeapon = character.weapons[WeaponIndex];
                if (character.FindRequiredRootSkill(CurrentWeapon.Info.weapon_skill))
                {
                    //Default battle additions
                    character._status.MaxWMAttack += (ushort)CurrentWeapon.Info.max_magic_attack;
                    character._status.MinWMAttack += (ushort)CurrentWeapon.Info.min_magic_attack;
                    character._status.MaxWPAttack += (ushort)CurrentWeapon.Info.max_short_attack;
                    character._status.MinWPAttack += (ushort)CurrentWeapon.Info.min_short_attack;
                    character._status.MaxWRAttack += (ushort)CurrentWeapon.Info.max_range_attack;
                    character._status.MinWRAttack += (ushort)CurrentWeapon.Info.min_range_attack;

                    //Reapplies alterstone additions
                    for (int i = 0; i < 8; i++)
                    {
                        uint addition = CurrentWeapon.Slots[i];
                        if (addition > 0)
                        {
                            Singleton.Additions.ApplyAddition(addition, character);
                        }
                    }

                    CurrentWeapon._active = 1;
                }
                else
                {
                    CurrentWeapon._active = 0;
                }
            }
        }