aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorMeji <alvaro.megias@outlook.com>2023-05-29 00:01:23 +0200
committerGitHub <noreply@github.com>2023-05-29 00:01:23 +0200
commit06d0b16f158e8793860d9edd11b990f20b1d0dac (patch)
tree0ecc06eb8e5b9ba20c615030be816ffc59705f52 /src/server/scripts
parent526b16fea41fb69a302fdebe8a727e175949f04b (diff)
Core/Creatures: Move creature difficulty specific data from creature_template table to creature_template_difficulty (#28931)
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Commands/cs_npc.cpp7
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp6
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp33
-rw-r--r--src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp8
-rw-r--r--src/server/scripts/Spells/spell_hunter.cpp2
-rw-r--r--src/server/scripts/Spells/spell_item.cpp5
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();
}
}