public void UpdateAsda2Spirit() { Asda2Spirit = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Spirit], IntMods[(int)StatModifierInt.Spirit] + Asda2BaseSpirit); UpdateAsda2MagicDefence(); UpdateMaxPower(); this.UpdatePowerRegen(); }
public void UpdateAsda2Strength() { Asda2Strength = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Strength], IntMods[(int)StatModifierInt.Strength] + Asda2BaseStrength); this.UpdateMainDamage(); UpdateCritDamageBonus(); UpdateMaxHealth(); }
//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(); }
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(); }
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(); }
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); }
protected override void Apply() { m_aura.Auras.Owner.MountSpeedMod = UnitUpdates.GetMultiMod(val = EffectValue / 100f, m_aura.Auras.Owner.MountSpeedMod); }
/// <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); }
public void UpdateAsda2Defence() { Asda2Defence = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Asda2Defence], IntMods[(int)StatModifierInt.Asda2Defence] + CharacterFormulas.ClaculateDefenceBonus(Level, Class, Asda2Agility)); }
public void UpdateAsda2MagicDefence() { Asda2MagicDefence = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Asda2MagicDefence], IntMods[(int)StatModifierInt.Asda2MagicDefence] + CharacterFormulas.CalculateMagicDefencePointsBonus(Level, Class, Asda2Spirit)); }
public void UpdateAsda2Stamina() { Asda2Stamina = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Stamina], IntMods[(int)StatModifierInt.Stamina] + Asda2BaseStamina); UpdateMaxHealth(); }
public void UpdateAsda2Intellect() { Asda2Intellect = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Intelect], IntMods[(int)StatModifierInt.Intellect] + Asda2BaseIntellect); this.UpdateMainDamage(); UpdateCritDamageBonus(); }
public void UpdateAsda2DropChance() { Asda2DropChance = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Asda2DropChance] + CharacterFormulas.CalculateDropChanceBoost(Asda2Luck), 1f); }
public void UpdateAsda2GoldAmount() { Asda2GoldAmountBoost = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Asda2GoldAmount] + CharacterFormulas.CalculateGoldAmountDropBoost(Level, Class, Asda2Luck), 1f); }
public void UpdateAsda2ExpAmount() { Asda2ExpAmountBoost = UnitUpdates.GetMultiMod(FloatMods[(int)StatModifierFloat.Asda2ExpAmount], 1f); }