*Headless horseman

-only summon once / instance
-fix fly movement
-proper invis modelids for dummies

--HG--
branch : trunk
This commit is contained in:
Rat
2009-10-19 10:22:45 +02:00
parent f1e8a6f0d3
commit 8a6e00d333
3 changed files with 22 additions and 7 deletions
+6
View File
@@ -0,0 +1,6 @@
UPDATE `creature_template` SET `modelid_A`='11686',`modelid_H`='11686' WHERE `entry`=23537;
UPDATE `creature_template` SET `modelid_A`='11686',`modelid_H`='11686' WHERE `entry`=23686;
UPDATE `creature_template` SET `modelid_A`='11686',`modelid_H`='11686' WHERE `entry`=23758;
UPDATE `creature_template` SET `modelid_A`='11686',`modelid_H`='11686' WHERE `entry`=24034;
UPDATE `creature_template` SET `modelid_A`='11686',`modelid_H`='11686' WHERE `entry`=23775;
@@ -129,7 +129,7 @@ static Summon Text[]=
{"Now, know demise!"} {"Now, know demise!"}
}; };
#define EMOTE_LAUGHS "laughs" #define EMOTE_LAUGHS "Headless Horseman laughs"
struct TRINITY_DLL_DECL mob_wisp_invisAI : public ScriptedAI struct TRINITY_DLL_DECL mob_wisp_invisAI : public ScriptedAI
{ {
@@ -406,15 +406,15 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
headGUID = 0; headGUID = 0;
} }
if (pInstance) //if (pInstance)
pInstance->SetData(DATA_HORSEMAN_EVENT, NOT_STARTED); // pInstance->SetData(DATA_HORSEMAN_EVENT, NOT_STARTED);
} }
void FlyMode() void FlyMode()
{ {
m_creature->SetVisibility(VISIBILITY_OFF); m_creature->SetVisibility(VISIBILITY_OFF);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_HOVER); m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING);
m_creature->SetSpeed(MOVE_WALK,5.0f,true); m_creature->SetSpeed(MOVE_WALK,5.0f,true);
wp_reached = false; wp_reached = false;
count = 0; count = 0;
@@ -447,7 +447,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
pInstance->SetData(GAMEOBJECT_PUMPKIN_SHRINE, 0); //hide gameobject pInstance->SetData(GAMEOBJECT_PUMPKIN_SHRINE, 0); //hide gameobject
break; break;
case 19: case 19:
m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_HOVER); m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING);
break; break;
case 20: case 20:
{ {
@@ -821,6 +821,13 @@ struct TRINITY_DLL_DECL mob_pulsing_pumpkinAI : public ScriptedAI
bool GOHello_go_loosely_turned_soil(Player* pPlayer, GameObject* soil) bool GOHello_go_loosely_turned_soil(Player* pPlayer, GameObject* soil)
{ {
ScriptedInstance* pInstance = pPlayer->GetInstanceData();
if (pInstance)
{
if(pInstance->GetData(DATA_HORSEMAN_EVENT) != NOT_STARTED)
return true;
pInstance->SetData(DATA_HORSEMAN_EVENT, IN_PROGRESS);
}
/* if (soil->GetGoType() == GAMEOBJECT_TYPE_QUESTGIVER && plr->getLevel() > 64) /* if (soil->GetGoType() == GAMEOBJECT_TYPE_QUESTGIVER && plr->getLevel() > 64)
{ {
plr->PrepareQuestMenu(soil->GetGUID()); plr->PrepareQuestMenu(soil->GetGUID());
@@ -30,7 +30,7 @@ EndScriptData */
#define ENTRY_HEAD 23775 #define ENTRY_HEAD 23775
#define ENTRY_PUMPKIN 23694 #define ENTRY_PUMPKIN 23694
#define MAX_ENCOUNTER 1 #define MAX_ENCOUNTER 2
struct TRINITY_DLL_DECL instance_scarlet_monastery : public ScriptedInstance struct TRINITY_DLL_DECL instance_scarlet_monastery : public ScriptedInstance
{ {
@@ -101,6 +101,7 @@ struct TRINITY_DLL_DECL instance_scarlet_monastery : public ScriptedInstance
HandleGameObject(PumpkinShrineGUID, false); HandleGameObject(PumpkinShrineGUID, false);
break; break;
case DATA_HORSEMAN_EVENT: case DATA_HORSEMAN_EVENT:
m_auiEncounter[1] = data;
if (data == DONE) if (data == DONE)
{ {
for (std::set<uint64>::iterator itr = HorsemanAdds.begin(); itr != HorsemanAdds.end(); ++itr) for (std::set<uint64>::iterator itr = HorsemanAdds.begin(); itr != HorsemanAdds.end(); ++itr)
@@ -135,7 +136,8 @@ struct TRINITY_DLL_DECL instance_scarlet_monastery : public ScriptedInstance
{ {
if (type == TYPE_MOGRAINE_AND_WHITE_EVENT) if (type == TYPE_MOGRAINE_AND_WHITE_EVENT)
return m_auiEncounter[0]; return m_auiEncounter[0];
if (type == DATA_HORSEMAN_EVENT)
return m_auiEncounter[1];
return 0; return 0;
} }
}; };