*Fix some resetbugs in script for quest 12848

--HG--
branch : trunk
This commit is contained in:
BroodWyrm
2009-05-29 23:00:37 +02:00
parent 66faf147f9
commit 0a9d956ca2
@@ -124,8 +124,12 @@ float modelid_dk_unworthy[20] =
struct TRINITY_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI struct TRINITY_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI
{ {
npc_unworthy_initiateAI(Creature *c) : ScriptedAI(c) { } npc_unworthy_initiateAI(Creature *c) : ScriptedAI(c)
{
m_creature->GetHomePosition(home_x,home_y,home_z,home_ori);
}
float home_x,home_y,home_z,home_ori;
bool event_startet; bool event_startet;
uint64 event_starter; uint64 event_starter;
initiate_phase phase; initiate_phase phase;
@@ -140,10 +144,15 @@ struct TRINITY_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI
anchor = 0; anchor = 0;
phase = Chained; phase = Chained;
events.Reset(); events.Reset();
m_creature->setFaction(7);
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 8); m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 8);
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0); m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0);
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, m_creature->GetNativeDisplayId()); m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, m_creature->GetNativeDisplayId());
event_starter = 0;
event_startet = false; event_startet = false;
m_creature->SetHomePosition(home_x,home_y,home_z,home_ori);
m_creature->GetMotionMaster()->MoveTargetedHome();
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
@@ -252,6 +261,7 @@ void npc_unworthy_initiateAI::UpdateAI(const uint32 diff)
{ {
float x, y, z; float x, y, z;
float dist = 99; float dist = 99;
uint64 nearest_prison;
for(int i = 0; i < 12; i++) for(int i = 0; i < 12; i++)
{ {
@@ -262,12 +272,17 @@ void npc_unworthy_initiateAI::UpdateAI(const uint32 diff)
{ {
temp_prison->GetPosition(x, y, z); temp_prison->GetPosition(x, y, z);
dist = m_creature->GetDistance2d(temp_prison); dist = m_creature->GetDistance2d(temp_prison);
nearest_prison = temp_prison->GetGUID();
} }
} }
if(dist == 99) return; if(dist == 99) return;
Creature* trigger = m_creature->SummonCreature(29521,x,y,z,0,TEMPSUMMON_MANUAL_DESPAWN,100); Creature* trigger = m_creature->SummonCreature(29521,x,y,z,0,TEMPSUMMON_MANUAL_DESPAWN,100);
if(trigger) if(trigger)
{ {
GameObject* go_prison = GameObject::GetGameObject((*m_creature),nearest_prison);
if(go_prison)
go_prison->ResetDoorOrButton();
((npc_unworthy_initiate_anchorAI*)trigger->AI())->SetTarget(m_creature->GetGUID()); ((npc_unworthy_initiate_anchorAI*)trigger->AI())->SetTarget(m_creature->GetGUID());
trigger->CastSpell(m_creature,SPELL_SOUL_PRISON_CHAIN,true); trigger->CastSpell(m_creature,SPELL_SOUL_PRISON_CHAIN,true);
anchor = trigger->GetGUID(); anchor = trigger->GetGUID();