diff options
author | Brian <runningnak3d@gmail.com> | 2010-01-21 18:39:27 -0700 |
---|---|---|
committer | Brian <runningnak3d@gmail.com> | 2010-01-21 18:39:27 -0700 |
commit | ea3b11f8c22a3eef0725bba4ed05888e72c9851e (patch) | |
tree | bac9abacd587dffa5631a6a5ee9fb559ce71e337 /src | |
parent | b4a6fd1a81c13bd71fef24290953a2f274099672 (diff) | |
parent | 7162dcd4758c182752537ec5cb123063d94150bf (diff) |
* merge
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Creature.cpp | 19 | ||||
-rw-r--r-- | src/game/Creature.h | 30 | ||||
-rw-r--r-- | src/game/ObjectMgr.cpp | 6 | ||||
-rw-r--r-- | src/game/StatSystem.cpp | 4 | ||||
-rw-r--r-- | src/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp | 22 | ||||
-rw-r--r-- | src/scripts/eastern_kingdoms/zulgurub/boss_arlokk.cpp | 7 | ||||
-rw-r--r-- | src/scripts/eastern_kingdoms/zulgurub/boss_marli.cpp | 14 | ||||
-rw-r--r-- | src/scripts/eastern_kingdoms/zulgurub/boss_thekal.cpp | 7 | ||||
-rw-r--r-- | src/scripts/eastern_kingdoms/zulgurub/boss_venoxis.cpp | 7 | ||||
-rw-r--r-- | src/scripts/world/npcs_special.cpp | 4 | ||||
-rw-r--r-- | src/shared/Database/SQLStorage.cpp | 4 |
11 files changed, 34 insertions, 90 deletions
diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index 4b6e8186801..29ed9983cd2 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -1107,24 +1107,15 @@ void Creature::SelectLevel(const CreatureInfo *cinfo) //damage float damagemod = 1.0f;//_GetDamageMod(rank); - float mindmg = stats->GenerateMinDmg(cinfo); - float maxdmg = stats->GenerateMaxDmg(cinfo); - float attackpower = stats->GenerateAttackPower(cinfo); - SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, mindmg * damagemod); - SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, maxdmg * damagemod); + SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, cinfo->mindmg * damagemod); + SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, cinfo->maxdmg * damagemod); - SetModifierValue(UNIT_MOD_ATTACK_POWER, BASE_VALUE, attackpower * damagemod); + SetFloatValue(UNIT_FIELD_MINRANGEDDAMAGE,cinfo->minrangedmg * damagemod); + SetFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE,cinfo->maxrangedmg * damagemod); - // ranged damage - float minrangeddmg = stats->GenerateRangedDmg(cinfo) / 2.5f; - float maxrangeddmg = stats->GenerateRangedDmg(cinfo) - mindmg; - float rangedattackpower = (minrangeddmg + maxrangeddmg) / 2 * 0.3; + SetModifierValue(UNIT_MOD_ATTACK_POWER, BASE_VALUE, cinfo->attackpower * damagemod); - SetFloatValue(UNIT_FIELD_MINRANGEDDAMAGE, minrangeddmg * damagemod); - SetFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE, maxrangeddmg * damagemod); - - SetModifierValue(UNIT_MOD_ATTACK_POWER_RANGED, BASE_VALUE, rangedattackpower * damagemod); } float Creature::_GetHealthMod(int32 Rank) diff --git a/src/game/Creature.h b/src/game/Creature.h index d3bee8d2eca..ad8dfc2b01c 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -89,7 +89,10 @@ struct CreatureInfo float speed; float scale; uint32 rank; + float mindmg; + float maxdmg; uint32 dmgschool; + uint32 attackpower; float dmg_multiplier; uint32 baseattacktime; uint32 rangeattacktime; @@ -101,6 +104,9 @@ struct CreatureInfo uint32 trainer_spell; uint32 trainer_class; uint32 trainer_race; + float minrangedmg; + float maxrangedmg; + uint32 rangedattackpower; uint32 type; // enum CreatureType values uint32 type_flags; // enum CreatureTypeFlags mask values uint32 lootid; @@ -123,8 +129,6 @@ struct CreatureInfo float ModHealth; float ModMana; float ModArmor; - float ModDmg; - float ModRangedDmg; bool RacialLeader; uint32 questItems[6]; uint32 movementId; @@ -171,8 +175,6 @@ struct TRINITY_DLL_SPEC CreatureBaseStats uint32 BaseHealth[MAX_CREATURE_BASE_HP]; uint32 BaseMana; uint32 BaseArmor; - uint32 BaseDmg; - uint32 BaseRangedDmg; // Helpers @@ -195,26 +197,6 @@ struct TRINITY_DLL_SPEC CreatureBaseStats return uint32((BaseArmor * info->ModArmor) + 0.5f); } - uint32 GenerateMinDmg(CreatureInfo const* info) const - { - return uint32((BaseDmg * (info->baseattacktime / 1000.0f) / 2.5f) * info->ModDmg + 0.5f); - } - - uint32 GenerateMaxDmg(CreatureInfo const* info) const - { - return uint32((BaseDmg * (info->baseattacktime / 1000) - GenerateMinDmg(info)) * info->ModDmg + 0.5f); - } - - uint32 GenerateAttackPower(CreatureInfo const* info) const - { - return uint32(((GenerateMinDmg(info) + GenerateMaxDmg(info)) / 2.0f * 0.3f) * info->ModDmg + 0.5f); - } - - uint32 GenerateRangedDmg(CreatureInfo const* info) const - { - return uint32((BaseDmg * (info->baseattacktime / 1000.0f) * info->ModRangedDmg) + 0.5f); - } - static CreatureBaseStats const* GetBaseStats(uint32 level, uint8 unitClass); }; diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 3416fcff41d..7c2c2e6a658 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -8917,7 +8917,7 @@ CreatureBaseStats const* ObjectMgr::GetCreatureBaseStats(uint32 level, uint8 uni void ObjectMgr::LoadCreatureClassLevelStats() { - QueryResult *result = WorldDatabase.Query("SELECT level, class, basehp0, basehp1, basehp2, basemana, basearmor, basedmg, baserangeddmg FROM creature_classlevelstats"); + QueryResult *result = WorldDatabase.Query("SELECT level, class, basehp0, basehp1, basehp2, basemana, basearmor FROM creature_classlevelstats"); if (!result) { @@ -8941,8 +8941,6 @@ void ObjectMgr::LoadCreatureClassLevelStats() stats.BaseHealth[i] = fields[i + 2].GetUInt32(); stats.BaseMana = fields[5].GetUInt32(); stats.BaseArmor = fields[6].GetUInt32(); - stats.BaseDmg = fields[7].GetUInt32(); - stats.BaseRangedDmg = fields[8].GetUInt32(); if (stats.Level > STRONG_MAX_LEVEL) { @@ -8989,8 +8987,6 @@ void ObjectMgr::LoadCreatureClassLevelStats() CreatureBaseStats new_stats = CreatureBaseStats(); new_stats.BaseArmor = 1; - new_stats.BaseDmg = 1; - new_stats.BaseRangedDmg = 1; for (uint8 j = 0; j < MAX_CREATURE_BASE_HP; ++j) new_stats.BaseHealth[j] = 1; new_stats.BaseMana = 0; diff --git a/src/game/StatSystem.cpp b/src/game/StatSystem.cpp index b5895fbb2e6..7197779fdfd 100644 --- a/src/game/StatSystem.cpp +++ b/src/game/StatSystem.cpp @@ -25,7 +25,6 @@ #include "SharedDefines.h" #include "SpellAuras.h" #include "SpellAuraEffects.h" -#include "ObjectMgr.h" /*####################################### ######## ######## @@ -866,8 +865,7 @@ void Creature::UpdateDamagePhysical(WeaponAttackType attType) float weapon_maxdamage = GetWeaponDamageRange(attType, MAXDAMAGE); /* difference in AP between current attack power and base value from DB */ - CreatureBaseStats const* stats = objmgr.GetCreatureBaseStats(getLevel(), GetCreatureInfo()->unit_class); - float att_pwr_change = GetTotalAttackPowerValue(attType) - stats->GenerateAttackPower(GetCreatureInfo()); + float att_pwr_change = GetTotalAttackPowerValue(attType) - GetCreatureInfo()->attackpower; float base_value = GetModifierValue(unitMod, BASE_VALUE) + (att_pwr_change * GetAPMultiplier(attType, false) / 14.0f); float base_pct = GetModifierValue(unitMod, BASE_PCT); float total_value = GetModifierValue(unitMod, TOTAL_VALUE); diff --git a/src/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp b/src/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp index 6a40cecacb6..dcba83ab249 100644 --- a/src/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp +++ b/src/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp @@ -270,11 +270,8 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI //damage const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); - float mindmg = stats->GenerateMinDmg(cinfo); - float maxdmg = stats->GenerateMaxDmg(cinfo); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, mindmg); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, maxdmg); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, cinfo->mindmg); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, cinfo->maxdmg); m_creature->UpdateDamagePhysical(BASE_ATTACK); } @@ -396,18 +393,15 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI //damage const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); - float mindmg = stats->GenerateMinDmg(cinfo); - float maxdmg = stats->GenerateMaxDmg(cinfo); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, 2 * mindmg); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, 2 * maxdmg); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, 2*cinfo->mindmg); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, 2*cinfo->maxdmg); m_creature->UpdateDamagePhysical(BASE_ATTACK); - m_creature->SetBaseWeaponDamage(OFF_ATTACK, MINDAMAGE, mindmg); - m_creature->SetBaseWeaponDamage(OFF_ATTACK, MAXDAMAGE, maxdmg); + m_creature->SetBaseWeaponDamage(OFF_ATTACK, MINDAMAGE, cinfo->mindmg); + m_creature->SetBaseWeaponDamage(OFF_ATTACK, MAXDAMAGE, cinfo->maxdmg); //Sigh, updating only works on main attack, do it manually .... - m_creature->SetFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE, mindmg); - m_creature->SetFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE, maxdmg); + m_creature->SetFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE, cinfo->mindmg); + m_creature->SetFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE, cinfo->maxdmg); m_creature->SetAttackTime(OFF_ATTACK, (m_creature->GetAttackTime(BASE_ATTACK)*150)/100); } diff --git a/src/scripts/eastern_kingdoms/zulgurub/boss_arlokk.cpp b/src/scripts/eastern_kingdoms/zulgurub/boss_arlokk.cpp index 05ab5c81447..7cea97bb7c2 100644 --- a/src/scripts/eastern_kingdoms/zulgurub/boss_arlokk.cpp +++ b/src/scripts/eastern_kingdoms/zulgurub/boss_arlokk.cpp @@ -234,11 +234,8 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); - float mindmg = stats->GenerateMinDmg(cinfo); - float maxdmg = stats->GenerateMaxDmg(cinfo); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (mindmg +((mindmg/100) * 35))); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (maxdmg +((maxdmg/100) * 35))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); m_creature->UpdateDamagePhysical(BASE_ATTACK); if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0)) diff --git a/src/scripts/eastern_kingdoms/zulgurub/boss_marli.cpp b/src/scripts/eastern_kingdoms/zulgurub/boss_marli.cpp index e240ae5db9a..e4b12ffb972 100644 --- a/src/scripts/eastern_kingdoms/zulgurub/boss_marli.cpp +++ b/src/scripts/eastern_kingdoms/zulgurub/boss_marli.cpp @@ -145,11 +145,8 @@ struct TRINITY_DLL_DECL boss_marliAI : public ScriptedAI DoScriptText(SAY_TRANSFORM, m_creature); DoCast(m_creature, SPELL_SPIDER_FORM); const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); - float mindmg = stats->GenerateMinDmg(cinfo); - float maxdmg = stats->GenerateMaxDmg(cinfo); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (mindmg +((mindmg/100) * 35))); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (maxdmg +((maxdmg/100) * 35))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); m_creature->UpdateDamagePhysical(BASE_ATTACK); DoCast(m_creature->getVictim(), SPELL_ENVOLWINGWEB); @@ -188,11 +185,8 @@ struct TRINITY_DLL_DECL boss_marliAI : public ScriptedAI { m_creature->SetDisplayId(15220); const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); - float mindmg = stats->GenerateMinDmg(cinfo); - float maxdmg = stats->GenerateMaxDmg(cinfo); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (mindmg +((mindmg/100) * 1))); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (maxdmg +((maxdmg/100) * 1))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 1))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 1))); m_creature->UpdateDamagePhysical(BASE_ATTACK); PhaseTwo = false; diff --git a/src/scripts/eastern_kingdoms/zulgurub/boss_thekal.cpp b/src/scripts/eastern_kingdoms/zulgurub/boss_thekal.cpp index 3f8b49c8970..e7002673cd3 100644 --- a/src/scripts/eastern_kingdoms/zulgurub/boss_thekal.cpp +++ b/src/scripts/eastern_kingdoms/zulgurub/boss_thekal.cpp @@ -185,11 +185,8 @@ struct TRINITY_DLL_DECL boss_thekalAI : public ScriptedAI m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetHealth(int(m_creature->GetMaxHealth()*1.0)); const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); - float mindmg = stats->GenerateMinDmg(cinfo); - float maxdmg = stats->GenerateMaxDmg(cinfo); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (mindmg +((mindmg/100) * 40))); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (maxdmg +((maxdmg/100) * 40))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 40))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 40))); m_creature->UpdateDamagePhysical(BASE_ATTACK); DoResetThreat(); PhaseTwo = true; diff --git a/src/scripts/eastern_kingdoms/zulgurub/boss_venoxis.cpp b/src/scripts/eastern_kingdoms/zulgurub/boss_venoxis.cpp index 5ea03ab4615..3b094b74b1e 100644 --- a/src/scripts/eastern_kingdoms/zulgurub/boss_venoxis.cpp +++ b/src/scripts/eastern_kingdoms/zulgurub/boss_venoxis.cpp @@ -148,11 +148,8 @@ struct TRINITY_DLL_DECL boss_venoxisAI : public ScriptedAI DoCast(m_creature, SPELL_SNAKE_FORM); m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, 2.00f); const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); - const CreatureBaseStats *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), cinfo->unit_class); - float mindmg = stats->GenerateMinDmg(cinfo); - float maxdmg = stats->GenerateMaxDmg(cinfo); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (mindmg +((mindmg/100) * 25))); - m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (maxdmg +((maxdmg/100) * 25))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 25))); + m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 25))); m_creature->UpdateDamagePhysical(BASE_ATTACK); DoResetThreat(); PhaseTwo = true; diff --git a/src/scripts/world/npcs_special.cpp b/src/scripts/world/npcs_special.cpp index 93e68d074e1..a57507f9c6a 100644 --- a/src/scripts/world/npcs_special.cpp +++ b/src/scripts/world/npcs_special.cpp @@ -1580,7 +1580,6 @@ struct TRINITY_DLL_DECL npc_snake_trap_serpentsAI : public ScriptedAI SpellTimer = 0; CreatureInfo const *Info = m_creature->GetCreatureInfo(); - CreatureBaseStats const *stats = ((CreatureBaseStats*)m_creature)->GetBaseStats(m_creature->getLevel(), Info->unit_class); if (Info->Entry == C_VIPER) IsViper = true; @@ -1589,9 +1588,8 @@ struct TRINITY_DLL_DECL npc_snake_trap_serpentsAI : public ScriptedAI //Add delta to make them not all hit the same time uint32 delta = (rand() % 7) * 100; - float attackpower = stats->GenerateAttackPower(Info); m_creature->SetStatFloatValue(UNIT_FIELD_BASEATTACKTIME, Info->baseattacktime + delta); - m_creature->SetStatFloatValue(UNIT_FIELD_RANGED_ATTACK_POWER , attackpower); + m_creature->SetStatFloatValue(UNIT_FIELD_RANGED_ATTACK_POWER , Info->attackpower); } //Redefined for random target selection: diff --git a/src/shared/Database/SQLStorage.cpp b/src/shared/Database/SQLStorage.cpp index efe00b9c0f6..e36297ed35b 100644 --- a/src/shared/Database/SQLStorage.cpp +++ b/src/shared/Database/SQLStorage.cpp @@ -27,8 +27,8 @@ extern DatabasePostgre WorldDatabase; extern DatabaseMysql WorldDatabase; #endif -const char CreatureInfosrcfmt[]="iiiiiiiiiisssiiiiiiiffiifiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisiifffffliiiiiiiliiis"; -const char CreatureInfodstfmt[]="iiiiiiiiiisssiiiiiiiffiifiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisiifffffliiiiiiiliiii"; +const char CreatureInfosrcfmt[]="iiiiiiiiiisssiiiiiiiffiffiifiiiiiiiiiiffiiiiiiiiiiiiiiiiiiiiiiiisiifffliiiiiiiliiis"; +const char CreatureInfodstfmt[]="iiiiiiiiiisssiiiiiiiffiffiifiiiiiiiiiiffiiiiiiiiiiiiiiiiiiiiiiiisiifffliiiiiiiliiii"; const char CreatureDataAddonInfofmt[]="iiiiiis"; const char CreatureModelfmt[]="iffbi"; const char CreatureInfoAddonInfofmt[]="iiiiiis"; |