mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 01:37:37 +01:00
Scripts/Stratholme: Few changes to how Ysida behaves during the Baron run (#20749)
(cherry picked from commit 2a25d9d9a7)
This commit is contained in:
@@ -40,6 +40,11 @@ enum InstanceEvents
|
||||
EVENT_SLAUGHTER_SQUARE = 2
|
||||
};
|
||||
|
||||
enum StratholmeMisc
|
||||
{
|
||||
SAY_YSIDA_SAVED = 0
|
||||
};
|
||||
|
||||
Position const timmyTheCruelSpawnPosition = { 3625.358f, -3188.108f, 130.3985f, 4.834562f };
|
||||
EllipseBoundary const beforeScarletGate(Position(3671.158f, -3181.79f), 60.0f, 40.0f);
|
||||
|
||||
@@ -80,8 +85,10 @@ class instance_stratholme : public InstanceMapScript
|
||||
ObjectGuid portGauntletGUID;
|
||||
ObjectGuid portSlaugtherGUID;
|
||||
ObjectGuid portElderGUID;
|
||||
ObjectGuid ysidaCageGUID;
|
||||
|
||||
ObjectGuid baronGUID;
|
||||
ObjectGuid ysidaGUID;
|
||||
ObjectGuid ysidaTriggerGUID;
|
||||
GuidSet crystalsGUID;
|
||||
GuidSet abomnationGUID;
|
||||
@@ -160,6 +167,9 @@ class instance_stratholme : public InstanceMapScript
|
||||
case NPC_ABOM_VENOM:
|
||||
abomnationGUID.insert(creature->GetGUID());
|
||||
break;
|
||||
case NPC_YSIDA:
|
||||
ysidaGUID = creature->GetGUID();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,6 +237,9 @@ class instance_stratholme : public InstanceMapScript
|
||||
case GO_PORT_ELDERS:
|
||||
portElderGUID = go->GetGUID();
|
||||
break;
|
||||
case GO_YSIDA_CAGE:
|
||||
ysidaCageGUID = go->GetGUID();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -246,14 +259,41 @@ class instance_stratholme : public InstanceMapScript
|
||||
break;
|
||||
case FAIL:
|
||||
DoRemoveAurasDueToSpellOnPlayers(SPELL_BARON_ULTIMATUM);
|
||||
if (Creature* ysida = instance->GetCreature(ysidaGUID))
|
||||
ysida->CastSpell(ysida, SPELL_PERM_FEIGN_DEATH, true);
|
||||
EncounterState[0] = data;
|
||||
break;
|
||||
case DONE:
|
||||
EncounterState[0] = data;
|
||||
if (Creature* ysidaTrigger = instance->GetCreature(ysidaTriggerGUID))
|
||||
|
||||
if (Creature* ysida = instance->GetCreature(ysidaGUID))
|
||||
{
|
||||
Position ysidaPos = ysidaTrigger->GetPosition();
|
||||
ysidaTrigger->SummonCreature(NPC_YSIDA, ysidaPos, TEMPSUMMON_TIMED_DESPAWN, 1800000);
|
||||
if (GameObject* cage = instance->GetGameObject(ysidaCageGUID))
|
||||
cage->UseDoorOrButton();
|
||||
|
||||
float x, y, z;
|
||||
//! This spell handles the Dead man's plea quest completion
|
||||
ysida->CastSpell(nullptr, SPELL_YSIDA_SAVED, true);
|
||||
ysida->SetWalk(true);
|
||||
ysida->AI()->Talk(SAY_YSIDA_SAVED);
|
||||
ysida->AddNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
ysida->GetClosePoint(x, y, z, ysida->GetObjectScale() / 3, 4.0f);
|
||||
ysida->GetMotionMaster()->MovePoint(1, x, y, z);
|
||||
|
||||
Map::PlayerList const& players = instance->GetPlayers();
|
||||
|
||||
for (auto const& i : players)
|
||||
{
|
||||
if (Player* player = i.GetSource())
|
||||
{
|
||||
if (player->IsGameMaster())
|
||||
continue;
|
||||
|
||||
//! im not quite sure what this one is supposed to do
|
||||
//! this is server-side spell
|
||||
player->CastSpell(ysida, SPELL_YSIDA_CREDIT_EFFECT, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
events.CancelEvent(EVENT_BARON_RUN);
|
||||
break;
|
||||
@@ -336,19 +376,9 @@ class instance_stratholme : public InstanceMapScript
|
||||
{
|
||||
HandleGameObject(portGauntletGUID, true);
|
||||
if (GetData(TYPE_BARON_RUN) == IN_PROGRESS)
|
||||
{
|
||||
DoRemoveAurasDueToSpellOnPlayers(SPELL_BARON_ULTIMATUM);
|
||||
Map::PlayerList const& players = instance->GetPlayers();
|
||||
if (!players.isEmpty())
|
||||
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||
if (Player* player = itr->GetSource())
|
||||
if (player->GetQuestStatus(QUEST_DEAD_MAN_PLEA) == QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
player->AreaExploredOrEventHappens(QUEST_DEAD_MAN_PLEA);
|
||||
player->KilledMonsterCredit(NPC_YSIDA);
|
||||
}
|
||||
SetData(TYPE_BARON_RUN, DONE);
|
||||
}
|
||||
|
||||
SetData(TYPE_BARON_RUN, DONE);
|
||||
}
|
||||
EncounterState[5] = data;
|
||||
break;
|
||||
@@ -442,6 +472,8 @@ class instance_stratholme : public InstanceMapScript
|
||||
return baronGUID;
|
||||
case DATA_YSIDA_TRIGGER:
|
||||
return ysidaTriggerGUID;
|
||||
case NPC_YSIDA:
|
||||
return ysidaGUID;
|
||||
}
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
@@ -297,9 +297,43 @@ public:
|
||||
|
||||
};
|
||||
|
||||
class spell_ysida_saved_credit : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_ysida_saved_credit);
|
||||
|
||||
bool Validate(SpellInfo const* /*spell*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_YSIDA_SAVED });
|
||||
}
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
targets.remove_if([](WorldObject* obj)
|
||||
{
|
||||
return obj->GetTypeId() != TYPEID_PLAYER;
|
||||
});
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Player* player = GetHitUnit()->ToPlayer())
|
||||
{
|
||||
player->AreaExploredOrEventHappens(QUEST_DEAD_MAN_PLEA);
|
||||
player->KilledMonsterCredit(NPC_YSIDA);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_ysida_saved_credit::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_ysida_saved_credit::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_stratholme()
|
||||
{
|
||||
new go_gauntlet_gate();
|
||||
new npc_restless_soul();
|
||||
new npc_spectral_ghostly_citizen();
|
||||
RegisterSpellScript(spell_ysida_saved_credit);
|
||||
}
|
||||
|
||||
@@ -78,7 +78,8 @@ enum STRGameobjectIds
|
||||
GO_ZIGGURAT5 = 175796, // baron
|
||||
GO_PORT_GAUNTLET = 175374, // port from gauntlet to slaugther
|
||||
GO_PORT_SLAUGTHER = 175373, // port at slaugther
|
||||
GO_PORT_ELDERS = 175377 // port at elders square
|
||||
GO_PORT_ELDERS = 175377, // port at elders square
|
||||
GO_YSIDA_CAGE = 181071
|
||||
};
|
||||
|
||||
enum STRQuestIds
|
||||
@@ -88,7 +89,10 @@ enum STRQuestIds
|
||||
|
||||
enum STRSpellIds
|
||||
{
|
||||
SPELL_BARON_ULTIMATUM = 27861
|
||||
SPELL_BARON_ULTIMATUM = 27861,
|
||||
SPELL_PERM_FEIGN_DEATH = 29266,
|
||||
SPELL_YSIDA_SAVED = 31912,
|
||||
SPELL_YSIDA_CREDIT_EFFECT = 31913
|
||||
};
|
||||
|
||||
enum STRMisc
|
||||
|
||||
Reference in New Issue
Block a user