diff options
| author | Meji <alvaro.megias@outlook.com> | 2023-05-29 00:01:23 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-29 00:01:23 +0200 |
| commit | 06d0b16f158e8793860d9edd11b990f20b1d0dac (patch) | |
| tree | 0ecc06eb8e5b9ba20c615030be816ffc59705f52 /src/server/scripts | |
| parent | 526b16fea41fb69a302fdebe8a727e175949f04b (diff) | |
Core/Creatures: Move creature difficulty specific data from creature_template table to creature_template_difficulty (#28931)
Diffstat (limited to 'src/server/scripts')
6 files changed, 53 insertions, 8 deletions
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 75e622d8d88..96de137197b 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -523,7 +523,10 @@ public: handler->PSendSysMessage(LANG_NPCINFO_DYNAMIC_FLAGS, target->GetDynamicFlags()); handler->PSendSysMessage(LANG_COMMAND_RAWPAWNTIMES, defRespawnDelayStr.c_str(), curRespawnDelayStr.c_str()); - handler->PSendSysMessage(LANG_NPCINFO_LOOT, cInfo->lootid, cInfo->pickpocketLootId, cInfo->SkinLootId); + + CreatureDifficulty const* creatureDifficulty = target->GetCreatureDifficulty(); + handler->PSendSysMessage(LANG_NPCINFO_LOOT, creatureDifficulty->LootID, creatureDifficulty->PickPocketLootID, creatureDifficulty->SkinLootID); + handler->PSendSysMessage(LANG_NPCINFO_DUNGEON_ID, target->GetInstanceId()); if (CreatureData const* data = sObjectMgr->GetCreatureData(target->GetSpawnId())) @@ -1092,7 +1095,7 @@ public: CreatureTemplate const* cInfo = creatureTarget->GetCreatureTemplate(); - if (!cInfo->IsTameable (player->CanTameExoticPets())) + if (!cInfo->IsTameable (player->CanTameExoticPets(), creatureTarget->GetCreatureDifficulty())) { handler->PSendSysMessage (LANG_CREATURE_NON_TAMEABLE, cInfo->Entry); handler->SetSentErrorMessage (true); diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp index 17c6645df02..12b9ac830dc 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp @@ -45,8 +45,12 @@ enum Spells SPELL_FREEZE_ANIM = 16245, SPELL_MOJO_PUDDLE = 55627, SPELL_MOJO_WAVE = 55626, + SPELL_MORTAL_STRIKES_NORMAL = 54715, + SPELL_MORTAL_STRIKES_HEROIC = 59454 }; +#define SPELL_MORTAL_STRIKES DUNGEON_MODE<uint32>(SPELL_MORTAL_STRIKES_NORMAL, SPELL_MORTAL_STRIKES_HEROIC) + enum ColossusEvents { EVENT_MIGHTY_BLOW = 1, @@ -110,6 +114,8 @@ struct boss_drakkari_colossus : public BossAI events.ScheduleEvent(EVENT_MIGHTY_BLOW, 10s, 30s); Initialize(); + + DoCastSelf(SPELL_MORTAL_STRIKES, true); } void JustEngagedWith(Unit* who) override diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp index 68e8279c164..0d2cd019ef4 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp @@ -76,6 +76,7 @@ enum Spells SPELL_TELEPORT_LIVE = 28026 }; +#define SPELL_UNHOLY_AURA RAID_MODE<uint32>(55606, 55608) #define SPELL_DEATH_PLAGUE RAID_MODE<uint32>(55604, 55645) #define SPELL_SHADOW_BOLT_VOLLEY RAID_MODE<uint32>(27831, 55638) #define SPELL_ARCANE_EXPLOSION RAID_MODE<uint32>(27989, 56407) @@ -663,7 +664,19 @@ struct npc_gothik_minion_livingrider : public npc_gothik_minion_baseAI { npc_gothik_minion_livingrider(Creature* creature) : npc_gothik_minion_baseAI(creature, SPELL_ANCHOR_1_RIDER), _boltVolleyTimer(urandms(5,10)) { } - void _UpdateAI(uint32 diff) + void JustAppeared() override + { + npc_gothik_minion_baseAI::JustAppeared(); + DoCastSelf(SPELL_UNHOLY_AURA, true); + } + + void JustReachedHome() override + { + npc_gothik_minion_baseAI::JustReachedHome(); + DoCastSelf(SPELL_UNHOLY_AURA, true); + } + + void _UpdateAI(uint32 diff) override { if (diff < _boltVolleyTimer) _boltVolleyTimer -= diff; @@ -674,6 +687,8 @@ struct npc_gothik_minion_livingrider : public npc_gothik_minion_baseAI } if (!me->HasUnitState(UNIT_STATE_CASTING)) DoMeleeAttackIfReady(); + + npc_gothik_minion_baseAI::_UpdateAI(diff); } uint32 _boltVolleyTimer; }; @@ -718,7 +733,19 @@ struct npc_gothik_minion_spectralrider : public npc_gothik_minion_baseAI { npc_gothik_minion_spectralrider(Creature* creature) : npc_gothik_minion_baseAI(creature), _frenzyTimer(urandms(2,5)), _drainTimer(urandms(8,12)) { } - void _UpdateAI(uint32 diff) + void JustAppeared() override + { + npc_gothik_minion_baseAI::JustAppeared(); + DoCastSelf(SPELL_UNHOLY_AURA, true); + } + + void JustReachedHome() override + { + npc_gothik_minion_baseAI::JustReachedHome(); + DoCastSelf(SPELL_UNHOLY_AURA, true); + } + + void _UpdateAI(uint32 diff) override { if (diff < _frenzyTimer) _frenzyTimer -= diff; @@ -764,6 +791,8 @@ struct npc_gothik_minion_spectralrider : public npc_gothik_minion_baseAI if (!me->HasUnitState(UNIT_STATE_CASTING)) DoMeleeAttackIfReady(); + + npc_gothik_minion_baseAI::_UpdateAI(diff); } uint32 _frenzyTimer, _drainTimer; }; diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp index 0af123ae289..ab0c7473639 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp @@ -56,9 +56,13 @@ enum Spells SPELL_KNOCK_AWAY = 36512, SPELL_FELFIRE_LINE_UP = 35770, SPELL_CHARGE_TARGETING = 36038, - SPELL_CHARGE = 35754 + SPELL_CHARGE = 35754, + SPELL_FEL_IMMOLATION_NORMAL = 36051, + SPELL_FEL_IMMOLATION_HEROIC = 39007 }; +#define SPELL_FEL_IMMOLATION DUNGEON_MODE<uint32>(SPELL_FEL_IMMOLATION_NORMAL, SPELL_FEL_IMMOLATION_HEROIC) + enum Events { EVENT_FELFIRE_SHOCK = 1, @@ -92,6 +96,8 @@ struct boss_wrath_scryer_soccothrates : public BossAI preFight = false; dalliahTaunt = false; dalliahDeath = false; + + DoCastSelf(SPELL_FEL_IMMOLATION, true); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index 2da3be2e4b0..bd24a8fbf5c 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -548,7 +548,7 @@ class spell_hun_tame_beast : public SpellScript return SPELL_FAILED_HIGHLEVEL; // use SMSG_PET_TAME_FAILURE? - if (!target->GetCreatureTemplate()->IsTameable(caster->CanTameExoticPets())) + if (!target->GetCreatureTemplate()->IsTameable(caster->CanTameExoticPets(), target->GetCreatureDifficulty())) return SPELL_FAILED_BAD_TARGETS; if (PetStable const* petStable = caster->GetPetStable()) diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 6c16d72b086..5a305ef0102 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -1074,11 +1074,12 @@ class spell_item_extract_gas : public AuraScript { Player* player = GetCaster()->ToPlayer(); Creature* creature = GetTarget()->ToCreature(); + CreatureDifficulty const* creatureDifficulty = creature->GetCreatureDifficulty(); // missing lootid has been reported on startup - just return - if (!creature->GetCreatureTemplate()->SkinLootId) + if (!creatureDifficulty->SkinLootID) return; - player->AutoStoreLoot(creature->GetCreatureTemplate()->SkinLootId, LootTemplates_Skinning, ItemContext::NONE, true); + player->AutoStoreLoot(creatureDifficulty->SkinLootID, LootTemplates_Skinning, ItemContext::NONE, true); creature->DespawnOrUnsummon(); } } |
