From b58425528625d2d8457bf12f4b6cc4f1e4eedb2a Mon Sep 17 00:00:00 2001 From: Ovalord <1Don7H4v3@m41L.com> Date: Sat, 20 Jan 2018 17:03:04 +0100 Subject: [PATCH] Core/Players: worgen will now learn running wild at level 20 *fixed transforming worgen when taking oder dealing damage --- .../world/4.3.4/custom_2018_01_20_02_world.sql | 1 + src/server/game/Entities/Player/Player.cpp | 4 ++++ src/server/game/Entities/Unit/Unit.cpp | 14 ++++++++++++++ src/server/game/Miscellaneous/SharedDefines.h | 7 +++++++ 4 files changed, 26 insertions(+) create mode 100644 sql/updates/world/4.3.4/custom_2018_01_20_02_world.sql diff --git a/sql/updates/world/4.3.4/custom_2018_01_20_02_world.sql b/sql/updates/world/4.3.4/custom_2018_01_20_02_world.sql new file mode 100644 index 0000000000..3e161ff783 --- /dev/null +++ b/sql/updates/world/4.3.4/custom_2018_01_20_02_world.sql @@ -0,0 +1 @@ +DELETE FROM `spell_learn_spell` WHERE `entry`= 87840 AND `SpellID`= 33388; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 1cb9f50617..8cec0eeb5f 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2941,6 +2941,10 @@ void Player::GiveLevel(uint8 level) SetByteFlag(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01); } + // Leaning Running Wild + if (getRace() == RACE_WORGEN && level == 20) + CastSpell(this, SPELL_RUNNING_WILD_LEARN, true); + sScriptMgr->OnPlayerLevelChanged(this, oldLevel); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index fe78ebded5..cb0d0e43a8 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -686,6 +686,20 @@ uint32 Unit::DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDam damage = 0; } + if (victim->getRace() == RACE_WORGEN && victim->ToPlayer()) + { + if (Player* worgenVictm = victim->ToPlayer()) + if (worgenVictm->HasSpell(SPELL_TWO_FORMS_RACIAL) && !worgenVictm->HasAura(SPELL_ALTERED_FORM_RACIAL)) + worgenVictm->CastSpell(worgenVictm, SPELL_ALTERED_FORM_RACIAL, true); + } + + if (getRace() == RACE_WORGEN && ToPlayer()) + { + if (Player* worgenPlayer = ToPlayer()) + if (worgenPlayer->HasSpell(SPELL_TWO_FORMS_RACIAL) && !HasAura(SPELL_ALTERED_FORM_RACIAL)) + CastSpell(worgenPlayer, SPELL_ALTERED_FORM_RACIAL, true); + } + if (victim->IsAIEnabled) victim->GetAI()->DamageTaken(this, damage); diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index e788ae2779..c6aacc5410 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -317,6 +317,13 @@ enum SpellVisualKit SPELL_VISUAL_KIT_DRINK = 438 }; +enum WorgenRacialSpells +{ + SPELL_RUNNING_WILD_LEARN = 94098, + SPELL_TWO_FORMS_RACIAL = 68996, + SPELL_ALTERED_FORM_RACIAL = 97709 +}; + const uint32 ItemQualityColors[MAX_ITEM_QUALITY] = { 0xff9d9d9d, //GREY