Esempio n. 1
0
 public void UpdateAsda2Spirit()
 {
     Asda2Spirit = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Spirit], IntMods[(int)StatModifierInt.Spirit] + Asda2BaseSpirit);
     UpdateAsda2MagicDefence();
     UpdateMaxPower();
     this.UpdatePowerRegen();
 }
Esempio n. 2
0
 public void UpdateAsda2Strength()
 {
     Asda2Strength = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Strength], IntMods[(int)StatModifierInt.Strength] + Asda2BaseStrength);
     this.UpdateMainDamage();
     UpdateCritDamageBonus();
     UpdateMaxHealth();
 }
Esempio n. 3
0
 //todo asda2 complete refenrece stat updates
 public void UpdateAsda2Luck()
 {
     Asda2Luck = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Luck], IntMods[(int)StatModifierInt.Luck] + Asda2BaseLuck);
     this.UpdateCritChance();
     UpdateAsda2DropChance();
     UpdateAsda2GoldAmount();
     UpdateCritDamageBonus();
 }
Esempio n. 4
0
 public void UpdateAsda2Agility()
 {
     Asda2Agility = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Agility], IntMods[(int)StatModifierInt.Agility] + Asda2BaseAgility);
     this.UpdateCritChance();
     this.UpdateAllAttackTimes();
     this.UpdateDodgeChance();
     UpdateSpeedFactor();
     UpdateAsda2Defence();
     UpdateCritDamageBonus();
     this.UpdateMainDamage();
 }
Esempio n. 5
0
        protected internal virtual void UpdateMaxHealth()
        {
            /*var stamina = Stamina;
             * var uncontributed = StaminaWithoutHealthContribution;
             * var stamBonus = Math.Max(stamina, uncontributed) + (Math.Max(0, stamina - uncontributed) * HealthPerStamina);
             *
             * var value = BaseHealth + stamBonus + MaxHealthModFlat;
             * value += (int)(value * MaxHealthModScalar + 0.5f);*/

            MaxHealth = (int)UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Health], IntMods[(int)StatModifierInt.Health] + BaseHealth + CharacterFormulas.CalculateHealthBonus(Level, Asda2Strength, Asda2Stamina, Class));

            this.UpdateHealthRegen();
        }
Esempio n. 6
0
        public void UpdateSpeedFactor()
        {
            var bns = CharacterFormulas.CalcSpeedBonus(Level, Class, Asda2Agility);

            if (bns > 1)
            {
                bns = 1;
            }
            SpeedFactor = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Speed] + bns, DefaultSpeedFactor);
            var chr = this as Character;

            if (chr != null)
            {
                GlobalHandler.SendSpeedChangedResponse(chr.Client);
            }
        }
        private void UpdateChancesByCombatRating(CombatRating rating)
        {
            // TODO: Update influence
            switch (rating)
            {
            case CombatRating.Dodge:
                UnitUpdates.UpdateDodgeChance(this);
                break;

            case CombatRating.Parry:
                UnitUpdates.UpdateParryChance(this);
                break;

            case CombatRating.Block:
                UnitUpdates.UpdateBlockChance(this);
                break;

            case CombatRating.MeleeCritChance:
                UnitUpdates.UpdateCritChance(this);
                break;

            case CombatRating.RangedCritChance:
                UnitUpdates.UpdateCritChance(this);
                break;

            case CombatRating.SpellCritChance:
                UnitUpdates.UpdateSpellCritChance(this);
                break;

            case CombatRating.DefenseSkill:
                UnitUpdates.UpdateDefense(this);
                break;

            case CombatRating.MeleeHitChance:
                UnitUpdates.UpdateMeleeHitChance(this);
                break;

            case CombatRating.RangedHitChance:
                UnitUpdates.UpdateRangedHitChance(this);
                break;

            case CombatRating.Expertise:
                UnitUpdates.UpdateExpertise(this);
                break;
            }
        }
 protected override void Apply()
 {
     this.m_aura.Auras.Owner.MountSpeedMod = UnitUpdates.GetMultiMod(this.val = (float)this.EffectValue / 100f,
                                                                     this.m_aura.Auras.Owner.MountSpeedMod);
 }
 protected override void Remove(bool cancelled)
 {
     this.m_aura.Auras.Owner.MountSpeedMod =
         UnitUpdates.GetMultiMod(-this.val, this.m_aura.Auras.Owner.MountSpeedMod);
 }
 protected override void Apply()
 {
     m_aura.Auras.Owner.SwimSpeedFactor =
         UnitUpdates.GetMultiMod(val    = EffectValue / 100f,
                                 m_aura.Auras.Owner.SwimSpeedFactor);
 }
 protected override void Remove(bool cancelled)
 {
     m_aura.Auras.Owner.SwimSpeedFactor =
         UnitUpdates.GetMultiMod(-val, m_aura.Auras.Owner.SwimSpeedFactor);
 }
Esempio n. 12
0
 protected override void Apply()
 {
     m_aura.Auras.Owner.MountSpeedMod = UnitUpdates.GetMultiMod(val = EffectValue / 100f, m_aura.Auras.Owner.MountSpeedMod);
 }
Esempio n. 13
0
        /// <summary>
        /// Creates a new character and loads all required character data from the database
        /// </summary>
        /// <param name="acc">The account the character is associated with</param>
        /// <param name="record">The name of the character to load</param>
        /// <param name="client">The client to associate with this character</param>
        internal protected void Create(RealmAccount acc, CharacterRecord record, IRealmClient client)
        {
            client.ActiveCharacter = this;
            acc.ActiveCharacter    = this;

            Type        |= ObjectTypes.Player;
            ChatChannels = new List <ChatChannel>(5);

            m_logoutTimer = new TimerEntry(0, DefaultLogoutDelayMillis, totalTime => FinishLogout());

            Account  = acc;
            m_client = client;

            m_record = record;
            EntityId = EntityId.GetPlayerId(m_record.EntityLowId);
            m_name   = m_record.Name;

            Archetype  = ArchetypeMgr.GetArchetype(record.Race, record.Class);
            MainWeapon = GenericWeapon.Fists;
            PowerType  = m_archetype.Class.DefaultPowerType;

            StandState = StandState.Sit;

            Money  = (uint)m_record.Money;
            Outfit = m_record.Outfit;
            //ScaleX = m_archetype.Race.Scale;
            ScaleX     = 1;
            Gender     = m_record.Gender;
            Skin       = m_record.Skin;
            Facial     = m_record.Face;
            HairStyle  = m_record.HairStyle;
            HairColor  = m_record.HairColor;
            FacialHair = m_record.FacialHair;
            UnitFlags  = UnitFlags.PlayerControlled;
            Experience = m_record.Xp;
            RestXp     = m_record.RestXp;

            SetInt32(UnitFields.LEVEL, m_record.Level);
            // cannot use Level property, since it will trigger certain events that we don't want triggered
            NextLevelXP = XpGenerator.GetXpForlevel(m_record.Level + 1);
            MaxLevel    = RealmServerConfiguration.MaxCharacterLevel;

            RestState = RestState.Normal;

            Orientation = m_record.Orientation;

            m_bindLocation = new WorldZoneLocation(
                m_record.BindMap,
                new Vector3(m_record.BindX, m_record.BindY, m_record.BindZ),
                m_record.BindZone);

            PvPRank         = 1;
            YieldsXpOrHonor = true;

            foreach (var school in SpellConstants.AllDamageSchools)
            {
                SetFloat(PlayerFields.MOD_DAMAGE_DONE_PCT + (int)school, 1);
            }
            SetFloat(PlayerFields.DODGE_PERCENTAGE, 1.0f);

            // Auras
            m_auras = new PlayerAuraCollection(this);

            // spells
            m_spells = PlayerSpellCollection.Obtain(this);

            // factions
            WatchedFaction = m_record.WatchedFaction;
            Faction        = FactionMgr.ByRace[(uint)record.Race];
            m_reputations  = new ReputationCollection(this);

            // skills
            m_skills = new SkillCollection(this);

            // talents
            m_talents = new PlayerTalentCollection(this);

            // achievements
            m_achievements = new AchievementCollection(this);

            // Items
            m_inventory = new PlayerInventory(this);

            m_mailAccount = new MailAccount(this);

            m_questLog = new QuestLog(this);

            // tutorial flags
            TutorialFlags = new TutorialFlags(m_record.TutorialFlags);

            // Make sure client and internal state is updated with combat base values
            UnitUpdates.UpdateSpellCritChance(this);

            // Mask of activated TaxiNodes
            m_taxiNodeMask = new TaxiNodeMask();

            PowerCostMultiplier = 1f;

            m_lastPlayTimeUpdate = DateTime.Now;

            MoveControl.Mover      = this;
            MoveControl.CanControl = true;

            IncMeleePermissionCounter();

            SpeedFactor = DefaultSpeedFactor;

            // basic setup
            if (record.JustCreated)
            {
                ModStatsForLevel(m_record.Level);
                BasePower = RegenerationFormulas.GetPowerForLevel(this);
            }
            else
            {
                BaseHealth = m_record.BaseHealth;
                SetBasePowerDontUpdate(m_record.BasePower);

                SetBaseStat(StatType.Strength, m_record.BaseStrength);
                SetBaseStat(StatType.Stamina, m_record.BaseStamina);
                SetBaseStat(StatType.Spirit, m_record.BaseSpirit);
                SetBaseStat(StatType.Intellect, m_record.BaseIntellect);
                SetBaseStat(StatType.Agility, m_record.BaseAgility);

                Power = m_record.Power;
                SetInt32(UnitFields.HEALTH, m_record.Health);
            }
        }
 protected override void Apply()
 {
     this.m_aura.Auras.Owner.SwimSpeedFactor =
         UnitUpdates.GetMultiMod(this.val    = (float)this.EffectValue / 100f,
                                 this.m_aura.Auras.Owner.SwimSpeedFactor);
 }
Esempio n. 15
0
 public void UpdateAsda2Defence()
 {
     Asda2Defence = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Asda2Defence], IntMods[(int)StatModifierInt.Asda2Defence] + CharacterFormulas.ClaculateDefenceBonus(Level, Class, Asda2Agility));
 }
Esempio n. 16
0
 public void UpdateAsda2MagicDefence()
 {
     Asda2MagicDefence = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Asda2MagicDefence], IntMods[(int)StatModifierInt.Asda2MagicDefence] + CharacterFormulas.CalculateMagicDefencePointsBonus(Level, Class, Asda2Spirit));
 }
Esempio n. 17
0
 public void UpdateAsda2Stamina()
 {
     Asda2Stamina = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Stamina], IntMods[(int)StatModifierInt.Stamina] + Asda2BaseStamina);
     UpdateMaxHealth();
 }
Esempio n. 18
0
 public void UpdateAsda2Intellect()
 {
     Asda2Intellect = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Intelect], IntMods[(int)StatModifierInt.Intellect] + Asda2BaseIntellect);
     this.UpdateMainDamage();
     UpdateCritDamageBonus();
 }
Esempio n. 19
0
 public void UpdateAsda2DropChance()
 {
     Asda2DropChance = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Asda2DropChance] + CharacterFormulas.CalculateDropChanceBoost(Asda2Luck), 1f);
 }
Esempio n. 20
0
 public void UpdateAsda2GoldAmount()
 {
     Asda2GoldAmountBoost = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Asda2GoldAmount] + CharacterFormulas.CalculateGoldAmountDropBoost(Level, Class, Asda2Luck), 1f);
 }
Esempio n. 21
0
 public void UpdateAsda2ExpAmount()
 {
     Asda2ExpAmountBoost = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Asda2ExpAmount], 1f);
 }