mirror of
https://github.com/ZhengPeiRu21/mod-individual-progression
synced 2025-11-29 23:44:51 +08:00
775 lines
22 KiB
C++
775 lines
22 KiB
C++
#include "IndividualProgression.h"
|
|
#include "WorldState.h"
|
|
|
|
class gobject_ipp_preaq : public GameObjectScript
|
|
{
|
|
public:
|
|
gobject_ipp_preaq() : GameObjectScript("gobject_ipp_preaq") { }
|
|
|
|
struct gobject_ipp_preaqAI: GameObjectAI
|
|
{
|
|
explicit gobject_ipp_preaqAI(GameObject* object) : GameObjectAI(object) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_BLACKWING_LAIR);
|
|
}
|
|
};
|
|
|
|
GameObjectAI* GetAI(GameObject* object) const override
|
|
{
|
|
return new gobject_ipp_preaqAI(object);
|
|
}
|
|
};
|
|
|
|
class gobject_ipp_we : public GameObjectScript
|
|
{
|
|
public:
|
|
gobject_ipp_we() : GameObjectScript("gobject_ipp_we") { }
|
|
|
|
struct gobject_ipp_weAI: GameObjectAI
|
|
{
|
|
explicit gobject_ipp_weAI(GameObject* object) : GameObjectAI(object) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
|
|
if (sIndividualProgression->hasPassedProgression(target, PROGRESSION_PRE_AQ))
|
|
{
|
|
return sIndividualProgression->isBeforeProgression(target, PROGRESSION_PRE_AQ);
|
|
}
|
|
else
|
|
{
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_BLACKWING_LAIR);
|
|
}
|
|
}
|
|
};
|
|
|
|
GameObjectAI* GetAI(GameObject* object) const override
|
|
{
|
|
return new gobject_ipp_weAI(object);
|
|
}
|
|
};
|
|
|
|
class gobject_ipp_aqwar : public GameObjectScript
|
|
{
|
|
public:
|
|
gobject_ipp_aqwar() : GameObjectScript("gobject_ipp_aqwar") { }
|
|
|
|
struct gobject_ipp_aqwarAI: GameObjectAI
|
|
{
|
|
explicit gobject_ipp_aqwarAI(GameObject* object) : GameObjectAI(object) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
|
|
if (sIndividualProgression->hasPassedProgression(target, PROGRESSION_AQ_WAR))
|
|
{
|
|
return sIndividualProgression->isBeforeProgression(target, PROGRESSION_AQ_WAR);
|
|
}
|
|
else
|
|
{
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_PRE_AQ);
|
|
}
|
|
}
|
|
};
|
|
|
|
GameObjectAI* GetAI(GameObject* object) const override
|
|
{
|
|
return new gobject_ipp_aqwarAI(object);
|
|
}
|
|
};
|
|
|
|
class gobject_ipp_si : public GameObjectScript
|
|
{
|
|
public:
|
|
gobject_ipp_si() : GameObjectScript("gobject_ipp_si") { }
|
|
|
|
struct gobject_ipp_siAI: GameObjectAI
|
|
{
|
|
explicit gobject_ipp_siAI(GameObject* object) : GameObjectAI(object) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster())
|
|
{
|
|
return true;
|
|
}
|
|
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
|
|
if (sIndividualProgression->hasPassedProgression(target, PROGRESSION_NAXX40))
|
|
{
|
|
return sIndividualProgression->isBeforeProgression(target, PROGRESSION_NAXX40);
|
|
}
|
|
else
|
|
{
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_AQ);
|
|
}
|
|
}
|
|
};
|
|
|
|
GameObjectAI* GetAI(GameObject* object) const override
|
|
{
|
|
return new gobject_ipp_siAI(object);
|
|
}
|
|
};
|
|
|
|
class gobject_ipp_naxx40 : public GameObjectScript
|
|
{
|
|
public:
|
|
gobject_ipp_naxx40() : GameObjectScript("gobject_ipp_naxx40") { }
|
|
|
|
struct gobject_ipp_naxx40AI: GameObjectAI
|
|
{
|
|
explicit gobject_ipp_naxx40AI(GameObject* object) : GameObjectAI(object) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_AQ);
|
|
}
|
|
};
|
|
|
|
GameObjectAI* GetAI(GameObject* object) const override
|
|
{
|
|
return new gobject_ipp_naxx40AI(object);
|
|
}
|
|
};
|
|
|
|
class gobject_ipp_pre_tbc : public GameObjectScript
|
|
{
|
|
public:
|
|
gobject_ipp_pre_tbc() : GameObjectScript("gobject_ipp_pre_tbc") { }
|
|
|
|
struct gobject_ipp_pre_tbcAI: GameObjectAI
|
|
{
|
|
explicit gobject_ipp_pre_tbcAI(GameObject* object) : GameObjectAI(object) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->isBeforeProgression(target, PROGRESSION_PRE_TBC);
|
|
}
|
|
};
|
|
|
|
GameObjectAI* GetAI(GameObject* object) const override
|
|
{
|
|
return new gobject_ipp_pre_tbcAI(object);
|
|
}
|
|
};
|
|
|
|
class gobject_ipp_tbc : public GameObjectScript
|
|
{
|
|
public:
|
|
gobject_ipp_tbc() : GameObjectScript("gobject_ipp_tbc") { }
|
|
|
|
struct gobject_ipp_tbcAI: GameObjectAI
|
|
{
|
|
explicit gobject_ipp_tbcAI(GameObject* object) : GameObjectAI(object) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_PRE_TBC);
|
|
}
|
|
};
|
|
|
|
GameObjectAI* GetAI(GameObject* object) const override
|
|
{
|
|
return new gobject_ipp_tbcAI(object);
|
|
}
|
|
};
|
|
|
|
class gobject_ipp_wotlk : public GameObjectScript
|
|
{
|
|
public:
|
|
gobject_ipp_wotlk() : GameObjectScript("gobject_ipp_wotlk") { }
|
|
|
|
struct gobject_ipp_wotlkAI: GameObjectAI
|
|
{
|
|
explicit gobject_ipp_wotlkAI(GameObject* object) : GameObjectAI(object) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_TBC_TIER_5);
|
|
}
|
|
};
|
|
|
|
GameObjectAI* GetAI(GameObject* object) const override
|
|
{
|
|
return new gobject_ipp_wotlkAI(object);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_preaq : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_preaq() : CreatureScript("npc_ipp_preaq") { }
|
|
|
|
struct npc_ipp_preaqAI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_preaqAI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_BLACKWING_LAIR);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_preaqAI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_we : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_we() : CreatureScript("npc_ipp_we") { }
|
|
|
|
struct npc_ipp_weAI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_weAI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
|
|
if (sIndividualProgression->hasPassedProgression(target, PROGRESSION_PRE_AQ))
|
|
{
|
|
return sIndividualProgression->isBeforeProgression(target, PROGRESSION_PRE_AQ);
|
|
}
|
|
else
|
|
{
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_BLACKWING_LAIR);
|
|
}
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_weAI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_aq : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_aq() : CreatureScript("npc_ipp_aq") { }
|
|
|
|
struct npc_ipp_aqAI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_aqAI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_AQ_WAR);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_aqAI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_si : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_si() : CreatureScript("npc_ipp_si") { }
|
|
|
|
struct npc_ipp_siAI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_siAI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster())
|
|
{
|
|
return true;
|
|
}
|
|
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
|
|
if (sIndividualProgression->hasPassedProgression(target, PROGRESSION_NAXX40))
|
|
{
|
|
return sIndividualProgression->isBeforeProgression(target, PROGRESSION_NAXX40);
|
|
}
|
|
else
|
|
{
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_AQ);
|
|
}
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_siAI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_pre_naxx40 : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_pre_naxx40() : CreatureScript("npc_ipp_pre_naxx40") { }
|
|
|
|
struct npc_ipp_pre_naxx40AI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_pre_naxx40AI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->isBeforeProgression(target, PROGRESSION_AQ);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_pre_naxx40AI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_naxx40 : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_naxx40() : CreatureScript("npc_ipp_naxx40") { }
|
|
|
|
struct npc_ipp_naxx40AI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_naxx40AI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_AQ);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_naxx40AI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_pre_tbc : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_pre_tbc() : CreatureScript("npc_ipp_pre_tbc") { }
|
|
|
|
struct npc_ipp_pre_tbcAI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_pre_tbcAI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->isBeforeProgression(target,PROGRESSION_PRE_TBC);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_pre_tbcAI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_tbc : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_tbc() : CreatureScript("npc_ipp_tbc") { }
|
|
|
|
struct npc_ipp_tbcAI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_tbcAI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_PRE_TBC);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_tbcAI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_tbc_pre_t4 : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_tbc_pre_t4() : CreatureScript("npc_ipp_tbc_pre_t4") { }
|
|
|
|
struct npc_ipp_tbc_pre_t4AI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_tbc_pre_t4AI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->isBeforeProgression(target,PROGRESSION_TBC_TIER_3);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_tbc_pre_t4AI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_tbc_t4 : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_tbc_t4() : CreatureScript("npc_ipp_tbc_t4") { }
|
|
|
|
struct npc_ipp_tbc_t4AI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_tbc_t4AI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_TBC_TIER_3);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_tbc_t4AI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_tbc_t5 : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_tbc_t5() : CreatureScript("npc_ipp_tbc_t5") { }
|
|
|
|
struct npc_ipp_tbc_t5AI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_tbc_t5AI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_TBC_TIER_4);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_tbc_t5AI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_wotlk : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_wotlk() : CreatureScript("npc_ipp_wotlk") { }
|
|
|
|
struct npc_ipp_wotlkAI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_wotlkAI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_TBC_TIER_5);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_wotlkAI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_wotlk_ulduar : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_wotlk_ulduar() : CreatureScript("npc_ipp_wotlk_ulduar") { }
|
|
|
|
struct npc_ipp_wotlk_ulduarAI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_wotlk_ulduarAI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_WOTLK_TIER_1);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_wotlk_ulduarAI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_wotlk_totc : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_wotlk_totc() : CreatureScript("npc_ipp_wotlk_totc") { }
|
|
|
|
struct npc_ipp_wotlk_totcAI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_wotlk_totcAI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_WOTLK_TIER_2);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_wotlk_totcAI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_wotlk_icc : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_wotlk_icc() : CreatureScript("npc_ipp_wotlk_icc") { }
|
|
|
|
struct npc_ipp_wotlk_iccAI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_wotlk_iccAI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_WOTLK_TIER_3);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_wotlk_iccAI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_ipp_ds2 : public CreatureScript
|
|
{
|
|
public:
|
|
npc_ipp_ds2() : CreatureScript("npc_ipp_ds2") { }
|
|
|
|
struct npc_ipp_ds2AI: ScriptedAI
|
|
{
|
|
explicit npc_ipp_ds2AI(Creature* creature) : ScriptedAI(creature) { };
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
if (sIndividualProgression->earlyDungeonSet2)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_BLACKWING_LAIR);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_ipp_ds2AI(creature);
|
|
}
|
|
};
|
|
|
|
class npc_training_dummy_ipp_wotlk : public CreatureScript
|
|
{
|
|
public:
|
|
npc_training_dummy_ipp_wotlk() : CreatureScript("npc_training_dummy_ipp_wotlk") { }
|
|
|
|
struct npc_training_dummy_ipp_wotlkAI : ScriptedAI
|
|
{
|
|
/*explicit*/ npc_training_dummy_ipp_wotlkAI(Creature* creature) : ScriptedAI(creature)
|
|
{
|
|
me->SetCombatMovement(false);
|
|
me->ApplySpellImmune(0, 0, 98, true); // ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true)
|
|
}
|
|
|
|
uint32 resetTimer;
|
|
|
|
void Reset() override
|
|
{
|
|
me->CastSpell(me, 61204, true); // CastSpell(me, SPELL_STUN_PERMANENT, true)
|
|
resetTimer = 5000;
|
|
}
|
|
|
|
void EnterEvadeMode(EvadeReason why) override
|
|
{
|
|
if (!_EnterEvadeMode(why))
|
|
return;
|
|
|
|
Reset();
|
|
}
|
|
|
|
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
|
|
{
|
|
resetTimer = 5000;
|
|
damage = 0;
|
|
}
|
|
|
|
void UpdateAI(uint32 diff) override
|
|
{
|
|
if (!UpdateVictim())
|
|
return;
|
|
|
|
if (resetTimer <= diff)
|
|
{
|
|
EnterEvadeMode(EVADE_REASON_NO_HOSTILES);
|
|
resetTimer = 5000;
|
|
}
|
|
else
|
|
resetTimer -= diff;
|
|
}
|
|
|
|
void MoveInLineOfSight(Unit* /*who*/) override { }
|
|
|
|
bool CanBeSeen(Player const* player) override
|
|
{
|
|
if (player->IsGameMaster() || !sIndividualProgression->enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
|
|
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_TBC_TIER_5);
|
|
}
|
|
};
|
|
|
|
CreatureAI* GetAI(Creature* creature) const override
|
|
{
|
|
return new npc_training_dummy_ipp_wotlkAI(creature);
|
|
}
|
|
};
|
|
|
|
// Add all scripts in one
|
|
void AddSC_mod_individual_progression_awareness()
|
|
{
|
|
new gobject_ipp_preaq(); // wanted poster Cenarion Hold
|
|
new gobject_ipp_we(); // War Effort supplies in cities
|
|
new gobject_ipp_aqwar(); // AQ war crystals
|
|
new gobject_ipp_si(); // Scourge Invasion
|
|
new gobject_ipp_naxx40();
|
|
new gobject_ipp_pre_tbc(); // stormwind pvp room
|
|
new gobject_ipp_tbc();
|
|
new gobject_ipp_wotlk();
|
|
new npc_ipp_preaq(); // Cenarion Hold NPCs
|
|
new npc_ipp_we(); // War Effort NPCs in cities
|
|
new npc_ipp_aq();
|
|
new npc_ipp_si(); // Scourge Invasion
|
|
new npc_ipp_pre_naxx40(); // Scourge Invasion
|
|
new npc_ipp_naxx40();
|
|
new npc_ipp_pre_tbc(); // vanilla pvp vendors
|
|
new npc_ipp_tbc();
|
|
new npc_ipp_tbc_pre_t4();
|
|
new npc_ipp_tbc_t4();
|
|
new npc_ipp_tbc_t5();
|
|
new npc_ipp_wotlk();
|
|
new npc_ipp_wotlk_ulduar();
|
|
new npc_ipp_wotlk_totc();
|
|
new npc_ipp_wotlk_icc();
|
|
new npc_ipp_ds2();
|
|
// new npc_training_dummy_ipp_wotlk();
|
|
}
|