Borean Tundra: Support for quest 11876
'Help Those That Cannot Help Themselves' --HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
UPDATE `creatyre_template` SET `scriptname`='npc_trapped_mammoth_calf' WHERE `entry`=25850;
|
||||||
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
UPDATE `item_template` SET `scriptname`='item_dehta_trap_smasher' WHERE `entry`=35228;
|
||||||
|
|
||||||
@@ -1987,6 +1987,135 @@ CreatureAI* GetAI_npc_bonker_togglevolt(Creature* pCreature)
|
|||||||
return new npc_bonker_togglevoltAI(pCreature);
|
return new npc_bonker_togglevoltAI(pCreature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*######
|
||||||
|
## Help Those That Cannot Help Themselves, Quest 11876
|
||||||
|
######*/
|
||||||
|
|
||||||
|
enum eHelpThemselves
|
||||||
|
{
|
||||||
|
QUEST_CANNOT_HELP_THEMSELVES = 11876,
|
||||||
|
GO_MAMMOTH_TRAP_1 = 188022,
|
||||||
|
GO_MAMMOTH_TRAP_2 = 188024,
|
||||||
|
GO_MAMMOTH_TRAP_3 = 188025,
|
||||||
|
GO_MAMMOTH_TRAP_4 = 188026,
|
||||||
|
GO_MAMMOTH_TRAP_5 = 188027,
|
||||||
|
GO_MAMMOTH_TRAP_6 = 188028,
|
||||||
|
GO_MAMMOTH_TRAP_7 = 188029,
|
||||||
|
GO_MAMMOTH_TRAP_8 = 188030,
|
||||||
|
GO_MAMMOTH_TRAP_9 = 188031,
|
||||||
|
GO_MAMMOTH_TRAP_10 = 188032,
|
||||||
|
GO_MAMMOTH_TRAP_11 = 188033,
|
||||||
|
GO_MAMMOTH_TRAP_12 = 188034,
|
||||||
|
GO_MAMMOTH_TRAP_13 = 188035,
|
||||||
|
GO_MAMMOTH_TRAP_14 = 188036,
|
||||||
|
GO_MAMMOTH_TRAP_15 = 188037,
|
||||||
|
GO_MAMMOTH_TRAP_16 = 188038,
|
||||||
|
GO_MAMMOTH_TRAP_17 = 188039,
|
||||||
|
GO_MAMMOTH_TRAP_18 = 188040,
|
||||||
|
GO_MAMMOTH_TRAP_19 = 188041,
|
||||||
|
GO_MAMMOTH_TRAP_20 = 188042,
|
||||||
|
GO_MAMMOTH_TRAP_21 = 188043,
|
||||||
|
GO_MAMMOTH_TRAP_22 = 188044,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct npc_trapped_mammoth_calfAI : public ScriptedAI
|
||||||
|
{
|
||||||
|
npc_trapped_mammoth_calfAI(Creature* c) : ScriptedAI(c) {}
|
||||||
|
|
||||||
|
uint32 uiTimer;
|
||||||
|
bool bStarted;
|
||||||
|
|
||||||
|
void Reset()
|
||||||
|
{
|
||||||
|
GameObject *pTrap;
|
||||||
|
|
||||||
|
uiTimer = 1500;
|
||||||
|
bStarted = false;
|
||||||
|
|
||||||
|
if ((pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_1,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_2,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_3,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_4,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_5,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_6,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_7,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_8,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_9,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_10,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_11,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_12,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_13,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_14,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_15,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_16,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_17,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_18,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_19,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_20,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_21,1.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_22,1.0f)))
|
||||||
|
pTrap->SetGoState(GO_STATE_ACTIVE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateAI(const uint32 diff)
|
||||||
|
{
|
||||||
|
if (bStarted)
|
||||||
|
{
|
||||||
|
if (uiTimer <= diff)
|
||||||
|
{
|
||||||
|
Position pos;
|
||||||
|
m_creature->GetRandomNearPosition(pos, 10.0f);
|
||||||
|
m_creature->GetMotionMaster()->MovePoint(0,pos);
|
||||||
|
bStarted = false;
|
||||||
|
}
|
||||||
|
else uiTimer -= diff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DoAction(const int32 param)
|
||||||
|
{
|
||||||
|
if (param == 1)
|
||||||
|
bStarted = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MovementInform(uint32 uiType, uint32 uiId)
|
||||||
|
{
|
||||||
|
GameObject* pTrap;
|
||||||
|
if (uiType != POINT_MOTION_TYPE)
|
||||||
|
return;
|
||||||
|
m_creature->DisappearAndDie();
|
||||||
|
|
||||||
|
if ((pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_1,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_2,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_3,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_4,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_5,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_6,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_7,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_8,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_9,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_10,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_11,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_12,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_13,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_14,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_15,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_16,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_17,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_18,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_19,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_20,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_21,11.0f)) ||
|
||||||
|
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_22,11.0f)))
|
||||||
|
pTrap->SetLootState(GO_JUST_DEACTIVATED);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
CreatureAI* GetAI_npc_trapped_mammoth_calf(Creature* pCreature)
|
||||||
|
{
|
||||||
|
return new npc_trapped_mammoth_calfAI(pCreature);
|
||||||
|
}
|
||||||
|
|
||||||
void AddSC_borean_tundra()
|
void AddSC_borean_tundra()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
@@ -2122,4 +2251,9 @@ void AddSC_borean_tundra()
|
|||||||
newscript->GetAI = &GetAI_npc_bonker_togglevolt;
|
newscript->GetAI = &GetAI_npc_bonker_togglevolt;
|
||||||
newscript->pQuestAccept=&QuestAccept_npc_bonker_togglevolt;
|
newscript->pQuestAccept=&QuestAccept_npc_bonker_togglevolt;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
|
|
||||||
|
newscript = new Script;
|
||||||
|
newscript->Name = "npc_trapped_mammoth_calf";
|
||||||
|
newscript->GetAI = &GetAI_npc_trapped_mammoth_calf;
|
||||||
|
newscript->RegisterSelf();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -316,6 +316,76 @@ bool ItemUse_item_petrov_cluster_bombs(Player* pPlayer, Item* pItem, const Spell
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*######
|
||||||
|
# item_dehta_trap_smasher
|
||||||
|
# For quest 11876, Help Those That Cannot Help Themselves
|
||||||
|
######*/
|
||||||
|
enum eHelpThemselves
|
||||||
|
{
|
||||||
|
QUEST_CANNOT_HELP_THEMSELVES = 11876,
|
||||||
|
NPC_TRAPPED_MAMMOTH_CALF = 25850,
|
||||||
|
GO_MAMMOTH_TRAP_1 = 188022,
|
||||||
|
GO_MAMMOTH_TRAP_2 = 188024,
|
||||||
|
GO_MAMMOTH_TRAP_3 = 188025,
|
||||||
|
GO_MAMMOTH_TRAP_4 = 188026,
|
||||||
|
GO_MAMMOTH_TRAP_5 = 188027,
|
||||||
|
GO_MAMMOTH_TRAP_6 = 188028,
|
||||||
|
GO_MAMMOTH_TRAP_7 = 188029,
|
||||||
|
GO_MAMMOTH_TRAP_8 = 188030,
|
||||||
|
GO_MAMMOTH_TRAP_9 = 188031,
|
||||||
|
GO_MAMMOTH_TRAP_10 = 188032,
|
||||||
|
GO_MAMMOTH_TRAP_11 = 188033,
|
||||||
|
GO_MAMMOTH_TRAP_12 = 188034,
|
||||||
|
GO_MAMMOTH_TRAP_13 = 188035,
|
||||||
|
GO_MAMMOTH_TRAP_14 = 188036,
|
||||||
|
GO_MAMMOTH_TRAP_15 = 188037,
|
||||||
|
GO_MAMMOTH_TRAP_16 = 188038,
|
||||||
|
GO_MAMMOTH_TRAP_17 = 188039,
|
||||||
|
GO_MAMMOTH_TRAP_18 = 188040,
|
||||||
|
GO_MAMMOTH_TRAP_19 = 188041,
|
||||||
|
GO_MAMMOTH_TRAP_20 = 188042,
|
||||||
|
GO_MAMMOTH_TRAP_21 = 188043,
|
||||||
|
GO_MAMMOTH_TRAP_22 = 188044,
|
||||||
|
};
|
||||||
|
|
||||||
|
bool ItemUse_item_dehta_trap_smasher(Player* pPlayer, Item* pItem, const SpellCastTargets &pTargets)
|
||||||
|
{
|
||||||
|
Creature* pMammoth;
|
||||||
|
GameObject* pTrap;
|
||||||
|
|
||||||
|
if (pPlayer->GetQuestStatus(QUEST_CANNOT_HELP_THEMSELVES) == QUEST_STATUS_INCOMPLETE &&
|
||||||
|
(pMammoth = pPlayer->FindNearestCreature(NPC_TRAPPED_MAMMOTH_CALF,5.0f)) &&
|
||||||
|
((pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_1,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_2,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_3,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_4,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_5,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_6,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_7,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_8,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_9,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_10,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_11,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_12,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_13,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_14,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_15,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_16,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_17,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_18,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_19,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_20,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_21,5.0f)) ||
|
||||||
|
(pTrap = pPlayer->FindNearestGameObject(GO_MAMMOTH_TRAP_22,5.0f))))
|
||||||
|
{
|
||||||
|
pMammoth->AI()->DoAction(1);
|
||||||
|
pTrap->SetGoState(GO_STATE_READY);
|
||||||
|
pPlayer->KilledMonsterCredit(NPC_TRAPPED_MAMMOTH_CALF,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void AddSC_item_scripts()
|
void AddSC_item_scripts()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
@@ -374,4 +444,9 @@ void AddSC_item_scripts()
|
|||||||
newscript->Name = "item_petrov_cluster_bombs";
|
newscript->Name = "item_petrov_cluster_bombs";
|
||||||
newscript->pItemUse = &ItemUse_item_petrov_cluster_bombs;
|
newscript->pItemUse = &ItemUse_item_petrov_cluster_bombs;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
|
|
||||||
|
newscript = new Script;
|
||||||
|
newscript->Name = "item_dehta_trap_smasher";
|
||||||
|
newscript->pItemUse = &ItemUse_item_dehta_trap_smasher;
|
||||||
|
newscript->RegisterSelf();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user