diff options
| author | Blaymoira <none@none> | 2009-01-11 02:23:11 +0100 | 
|---|---|---|
| committer | Blaymoira <none@none> | 2009-01-11 02:23:11 +0100 | 
| commit | ca1c3cf7938c6a0d88769936e86b158072ec13f6 (patch) | |
| tree | 0822f1a51a5508e7c12199890295c3316948a914 /src | |
| parent | 7233c671c173ac4783fc4654d89135cd9809ab66 (diff) | |
*Support for quest 11129 - by Silver1ce
--HG--
branch : trunk
Diffstat (limited to 'src')
| -rw-r--r-- | src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp | 115 | 
1 files changed, 112 insertions, 3 deletions
| diff --git a/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp b/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp index 44de5eab777..72125a8e2d9 100644 --- a/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp +++ b/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp @@ -17,12 +17,13 @@  /* ScriptData  SDName: Mulgore  SD%Complete: 100 -SDComment: Skorn Whitecloud: Just a story if not rewarded for quest +SDComment: Support for quest: 11129  SDCategory: Mulgore  EndScriptData */  /* ContentData  npc_skorn_whitecloud +npc_kyle_frenzied  EndContentData */  #include "precompiled.h" @@ -52,13 +53,121 @@ bool GossipSelect_npc_skorn_whitecloud(Player *player, Creature *_Creature, uint      return true;  } +/*##### +# npc_kyle_frenzied +######*/ + +struct TRINITY_DLL_DECL npc_kyle_frenziedAI : public ScriptedAI +{ +	npc_kyle_frenziedAI(Creature *c) : ScriptedAI(c) {Reset();} + +	int STATE; +	uint32 wait; +	uint64 player; + +	void Reset() +	{ +		STATE = 0; +		m_creature->SetDefaultMovementType(WAYPOINT_MOTION_TYPE); +		m_creature->GetMotionMaster()->Initialize(); +	} +	void Aggro(Unit* who){} + +	void SpellHit(Unit *caster, const SpellEntry* spell) +	{	// we can feed him without any quest +		if(spell->Id == 42222 && caster->GetTypeId() == TYPEID_PLAYER && ((Player*)caster)->GetTeam() == HORDE) +		{ +			STATE = 1; +			player = caster->GetGUID(); +			float x, y, z, z2; +			caster->GetPosition(x, y, z); +			x = x + 3.7*cos(caster->GetOrientation()); +			y = y + 3.7*sin(caster->GetOrientation()); +			z2 = m_creature->GetBaseMap()->GetHeight(x,y,z,false); +			z = (z2 <= INVALID_HEIGHT) ? z : z2; +			m_creature->SetDefaultMovementType(IDLE_MOTION_TYPE);		//there is other way to stop waypoint movement? +			m_creature->GetMotionMaster()->Initialize(); +			m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); +			m_creature->GetMotionMaster()->MovePoint(0,x, y, z); +		} +	} + +    void MovementInform(uint32 type, uint32 id) +	{ +		if(type == POINT_MOTION_TYPE) +		{	 +			switch(STATE) +			{ +			case 1: +				{ +				Unit *plr = Unit::GetUnit((*m_creature),player); +				if(plr) +				m_creature->SetOrientation(m_creature->GetAngle(plr)); +				m_creature->HandleEmoteCommand(EMOTE_STATE_USESTANDING);	//eat +				WorldPacket data; +				m_creature->BuildHeartBeatMsg(&data); +				m_creature->SendMessageToSet(&data,true); +				wait = 3000; +				STATE = 2; +				break; +				} +			case 4: +				m_creature->setDeathState(JUST_DIED); +				m_creature->Respawn(); +				break; +			} +		} +	} + +	void UpdateAI(const uint32 diff) +	{ +		if (!STATE || STATE == 4) +			return; +		if(wait < diff) +		{ +			switch(STATE) +			{ +			case 2:  +				STATE = 3; wait = 7000; +				m_creature->UpdateEntry(23622,HORDE); +				m_creature->HandleEmoteCommand(EMOTE_ONESHOT_DANCE); +				break; +			case 3: +				STATE = 4;	//go home +				Unit *plr = Unit::GetUnit((*m_creature),player); +					if(plr && ((Player*)plr)->GetQuestStatus(11129) == QUEST_STATUS_INCOMPLETE) +						((Player*)plr)->CompleteQuest(11129); +				float x, y, z, z2, angle; +				angle = m_creature->GetAngle(-2146, -430); +				m_creature->GetPosition(x,y,z); +				x = x + 40*cos(angle); +				y = y + 40*sin(angle); +				z2 = m_creature->GetBaseMap()->GetHeight(x,y,MAX_HEIGHT,false); +				z = (z2 <= INVALID_HEIGHT) ? z : z2; +				m_creature->GetMotionMaster()->MovePoint(0,x,y,z); +				break; +			} +		}else wait -= diff; +	} +}; + +CreatureAI* GetAI_npc_kyle_frenzied(Creature *_Creature) +{ +    return new npc_kyle_frenziedAI (_Creature); +} +  void AddSC_mulgore()  {      Script *newscript;      newscript = new Script;      newscript->Name="npc_skorn_whitecloud"; -    newscript->pGossipHello          = &GossipHello_npc_skorn_whitecloud; -    newscript->pGossipSelect         = &GossipSelect_npc_skorn_whitecloud; +    newscript->pGossipHello = &GossipHello_npc_skorn_whitecloud; +    newscript->pGossipSelect = &GossipSelect_npc_skorn_whitecloud; +    newscript->RegisterSelf(); + +	newscript = new Script; +    newscript->Name="npc_kyle_frenzied"; +    newscript->GetAI = &GetAI_npc_kyle_frenzied;      newscript->RegisterSelf();  } | 
