PDA

View Full Version : Rescue from Town Square



Tymeconue
10-07-11, 00:29
Nama Quest: Rescue from Town Square

NPC: High Commander Halford Wyrmbane

Faction: Alliance & Horde

Referensi: http://www.wowhead.com/quest=12253/rescue-from-town-square

Error: Nothing happened when we had kill the mob (Vengeful Geist) nor talked to the villagers. Please fix it. Thx.

Cress
22-08-11, 03:27
confirmed

padahal ini quest chain battle of undercity T_T

oblivi0n
26-04-12, 19:13
Permisi Tim GM saya nemu code C++ buat quest ini.
Mohon di periksa apakah bisa di apply untuk quest ini dan aman untuk server AMPM ?


Quest : Rescue from Town Square (http://old.wowhead.com/quest=12253) (Quest ini merupakan kunci membuka chain quest yang panjang alliance di Dragon Blight)
NPC : High Commander Halford Wyrmbane <7th Legion> (http://old.wowhead.com/npc=27136)
Faction : Alliance
Error : Quest Objective tidak terhitung saat membunuh Vengeful Geist (http://old.wowhead.com/npc=27370) untuk menyelamatkan Trapped Wintergarde Villager (http://old.wowhead.com/npc=27359)



#include "ScriptPCH.h"
#include "ScriptedEscortAI.h"

enum eEnums
{
QUEST_RETURN_TO_AG_A = 12499,
QUEST_RETURN_TO_AG_H = 12500,
MOVIE_ID_GATES = 14
};

#define GOSSIP_ITEM_WHAT_HAPPENED "Alexstrasza, can you show me what happened here?"

class npc_alexstrasza_wr_gate : public CreatureScript
{
public:
npc_alexstrasza_wr_gate() : CreatureScript("npc_alexstrasza_wr_gate") { }

bool OnGossipHello(Player* player, Creature* creature)
{
if (creature->isQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());

if (player->GetQuestRewardStatus(QUEST_RETURN_TO_AG_A) || player->GetQuestRewardStatus(QUEST_RETURN_TO_AG_H))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_WHAT_HAPPENED, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);

player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
return true;
}

bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*uiSender*/, uint32 uiAction)
{
player->PlayerTalkClass->ClearMenus();
if (uiAction == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
player->SendMovieStart(MOVIE_ID_GATES);
}

return true;
}
};

/*#######
# Quest Rescue from Town Square
########*/
enum eEnumVillager
{
QUEST_RESCUE_FROM_TOWN_SQUARE = 12253,
NPC_VILLAGER = 27359
};

#define GOSSIP_ITEM_HELP "Rettet mich bitte!"

class npc_trapped_wintergarde_villager : public CreatureScript
{
public:
npc_trapped_wintergarde_villager() : CreatureScript("npc_trapped_wintergarde_villager") {}

bool OnGossipHello(Player* player, Creature* creature)
{
if (creature->isQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());

if (player->GetQuestStatus(QUEST_RESCUE_FROM_TOWN_SQUARE) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_HELP, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);

player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
return true;
}

bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction)
{
player->PlayerTalkClass->ClearMenus();
if (uiAction == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
player->ToPlayer()->KilledMonsterCredit(NPC_VILLAGER, 0);
creature->DespawnOrUnsummon();
}
return true;
}
};



/*######
## npc_rokhan
######*/

#define ROKHAN_GOSSIP_ITEM1 "Bitte ruft den Drachen, damit ich ihm das Herz entreissen kann!"

enum eRokhan
{
QUEST_SARATHSTRA_COURGE_OF_THE_NORTH = 12097,
QUEST_TO_DRAGONS_FALL = 12095,
NPC_ROKHAN = 26859,
CREATURE_SARATHSTRA = 26858
};

class npc_rokhan : public CreatureScript
{
public:
npc_rokhan() : CreatureScript("npc_rokhan") { }

bool OnGossipHello(Player* player, Creature* creature)
{
if (creature->isQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());

if (player->GetQuestStatus(QUEST_SARATHSTRA_COURGE_OF_THE_NORT H) == QUEST_STATUS_INCOMPLETE && !player->FindNearestCreature(CREATURE_SARATHSTRA,200,true))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, ROKHAN_GOSSIP_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);

player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());

return true;
}

bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction)
{
player->CLOSE_GOSSIP_MENU();

if(Creature* tmp = player->FindNearestCreature(CREATURE_SARATHSTRA,200,false) )
tmp->DespawnOrUnsummon();

Creature *tmpsarath = player->SummonCreature(CREATURE_SARATHSTRA,4412.329f,857.7 95f,170.0f,2.28f);
tmpsarath->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
tmpsarath->SetFlying(true);
tmpsarath->GetMotionMaster()->MovePoint(0,4362.881f,946.37f,87.94f);
player->GetMotionMaster()->MovePoint(0,4362.881f,946.37f,82.94f);
tmpsarath->DespawnOrUnsummon(17000);

Creature *tmpsarath = player->SummonCreature(CREATURE_SARATHSTRA,0,4362.881f,946 .37f,82.94f,TEMPSUMMON_CORPSE_TIMED_DESPAWN,60000) ;
tmpsarath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
tmpsarath->SetFlying(false);





return true;

}
};

void AddSC_dragonblight()
{
new npc_alexstrasza_wr_gate;
new npc_trapped_wintergarde_villager();
new npc_rokhan();
}



SUMBER (http://pastebin.com/x3eCL5Qs)