*Support for quest 11129 - by Silver1ce
--HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
insert into `spell_script_target` values
|
||||||
|
('42222','1','23616');
|
||||||
|
update `creature_template` set `scriptname`='npc_kyle_frenzied' where `entry`='23616';
|
||||||
@@ -17,12 +17,13 @@
|
|||||||
/* ScriptData
|
/* ScriptData
|
||||||
SDName: Mulgore
|
SDName: Mulgore
|
||||||
SD%Complete: 100
|
SD%Complete: 100
|
||||||
SDComment: Skorn Whitecloud: Just a story if not rewarded for quest
|
SDComment: Support for quest: 11129
|
||||||
SDCategory: Mulgore
|
SDCategory: Mulgore
|
||||||
EndScriptData */
|
EndScriptData */
|
||||||
|
|
||||||
/* ContentData
|
/* ContentData
|
||||||
npc_skorn_whitecloud
|
npc_skorn_whitecloud
|
||||||
|
npc_kyle_frenzied
|
||||||
EndContentData */
|
EndContentData */
|
||||||
|
|
||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
@@ -52,13 +53,121 @@ bool GossipSelect_npc_skorn_whitecloud(Player *player, Creature *_Creature, uint
|
|||||||
return true;
|
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()
|
void AddSC_mulgore()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
|
|
||||||
newscript = new Script;
|
newscript = new Script;
|
||||||
newscript->Name="npc_skorn_whitecloud";
|
newscript->Name="npc_skorn_whitecloud";
|
||||||
newscript->pGossipHello = &GossipHello_npc_skorn_whitecloud;
|
newscript->pGossipHello = &GossipHello_npc_skorn_whitecloud;
|
||||||
newscript->pGossipSelect = &GossipSelect_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();
|
newscript->RegisterSelf();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user