Children's Week

Been playing around a bit and was wondering if these two scripts were correct… =)

The reason I am using areatrigger and NPC scripts is because the pre-TBC versions were using areatriggers and the TBC and up versions used triggers. /emoticons/default_smile.png

Problem:

It seems to crash on the different faction quests (Dark Portal and Caverns of Time).

npcs_special.cpp

[CODE]/*######

npc_childrens_week_trigger

######*/

enum ChildrensWeek
{
QUEST_AUCHINDOUN = 10950,
QUEST_DARK_PORTAL_H = 10951,
QUEST_DARK_PORTAL_A = 10952,
QUEST_JHEEL_AERIS = 10954,
QUEST_SEAT_NAARU = 10956,
QUEST_CALL_FARSEER = 10958,
QUEST_CAVERNS_A = 10962,
QUEST_CAVERNS_H = 10963,
QUEST_THRONE = 10953,
QUEST_SPOREGGAR = 10945,

NPC_AUCHINDOUN	  = 22831,
NPC_SEAT_NAARU	  = 22851,
NPC_CALL_FARSEER	= 22905,
NPC_DARK_PORTAL	 = 22833,
NPC_CAVERNS		 = 22872,
NPC_AERIS_LANDING   = 22838,
NPC_SPOREGGAR	   = 22829,
NPC_THRONE_ELEMENT  = 22839,

AURA_ORPHAN_OUT	 = 58818,

};

class npc_childrens_week_trigger : public CreatureScript
{
public:
npc_childrens_week_trigger() : CreatureScript(“npc_childrens_week_trigger”) { }

CreatureAI* GetAI(Creature* creature) const
{
	return new npc_childrens_week_triggerAI (creature);
}

struct npc_childrens_week_triggerAI : public ScriptedAI
{
	npc_childrens_week_triggerAI(Creature* c) : ScriptedAI(c) {}

	void Reset() { }

	void EnterCombat(Unit* /*who*/) { }

	void MoveInLineOfSight(Unit* who)
	{
		uint32 questId = 0;

		if (!who)
			return;

		switch (me->GetEntry())
		{
			case NPC_AUCHINDOUN:
				questId = QUEST_AUCHINDOUN;
				break;
			case NPC_SEAT_NAARU:
				questId = QUEST_SEAT_NAARU;
				break;
			case NPC_CALL_FARSEER:
				questId = QUEST_CALL_FARSEER;
				break;
			case NPC_DARK_PORTAL:
				questId = who->ToPlayer()->GetTeam() == ALLIANCE ? QUEST_DARK_PORTAL_A : QUEST_DARK_PORTAL_H;
				break;
			case NPC_CAVERNS:
				questId = who->ToPlayer()->GetTeam() == ALLIANCE ? QUEST_CAVERNS_A : QUEST_CAVERNS_H;
				break;
			case NPC_AERIS_LANDING:
				questId = QUEST_JHEEL_AERIS;
				break;
			case NPC_SPOREGGAR:
				questId = QUEST_SPOREGGAR;
				break;
			case NPC_THRONE_ELEMENT:
				questId = QUEST_THRONE;
				break;
		}

		if (who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 10) && who->HasAura(AURA_ORPHAN_OUT))
		{
			if (who->ToPlayer()->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE)
				who->ToPlayer()->AreaExploredOrEventHappens(questId);
		}
	}
};

};[/code]

areatrigger_scripts.cpp

[code]/*######

at_bring_your_orphan_to

######*/

enum ChildrensWeek
{
QUEST_DOWN_AT_THE_DOCKS = 910,
QUEST_GATEWAY_TO_THE_FRONTIER = 911,
QUEST_LORDAERON_THRONE_ROOM = 1800,
QUEST_BOUGHT_OF_ETERNALS = 1479,
QUEST_SPOOKY_LIGHTHOUSE = 1687,
QUEST_STONEWROUGHT_DAM = 1558,

AT_DOWN_AT_THE_DOCKS			= 3551,
AT_GATEWAY_TO_THE_FRONTIER	  = 3549,
AT_LORDAERON_THRONE_ROOM		= 3547,
AT_BOUGHT_OF_ETERNALS		   = 3546,
AT_SPOOKY_LIGHTHOUSE			= 3552,
AT_STONEWROUGHT_DAM			 = 3548,
AT_DARK_PORTAL				  = 4356,

AURA_ORPHAN_OUT				 = 58818,

};

class AreaTrigger_at_bring_your_orphan_to : public AreaTriggerScript
{
public:
AreaTrigger_at_bring_your_orphan_to() : AreaTriggerScript(“at_bring_your_orphan_to”) { }

bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
{
	uint32 questId = 0;

	if (player->isDead() || !player->HasAura(AURA_ORPHAN_OUT))
		return false;

	switch (trigger->id)
	{
		case AT_DOWN_AT_THE_DOCKS:
			questId = QUEST_DOWN_AT_THE_DOCKS;
			break;
		case AT_GATEWAY_TO_THE_FRONTIER:
			questId = QUEST_GATEWAY_TO_THE_FRONTIER;
			break;
		case AT_LORDAERON_THRONE_ROOM:
			questId = QUEST_LORDAERON_THRONE_ROOM;
			break;
		case AT_BOUGHT_OF_ETERNALS:
			questId = QUEST_BOUGHT_OF_ETERNALS;
			break;
		case AT_SPOOKY_LIGHTHOUSE:
			questId = QUEST_SPOOKY_LIGHTHOUSE;
			break;
		case AT_STONEWROUGHT_DAM:
			questId = QUEST_STONEWROUGHT_DAM;
			break;
	}

	if (questId && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE)
		player->AreaExploredOrEventHappens(questId);

	return true;
}

};
[/CODE]

[CODE]-- Areatrigger
DELETE FROM areatrigger_scripts WHERE entry IN (3551,3549,3547,3546,3552,3548);
INSERT INTO areatrigger_scripts (entry,ScriptName) VALUES
(3551,‘at_bring_your_orphan_to’),
(3549,‘at_bring_your_orphan_to’),
(3547,‘at_bring_your_orphan_to’),
(3546,‘at_bring_your_orphan_to’),
(3552,‘at_bring_your_orphan_to’),
(3548,‘at_bring_your_orphan_to’);

– Outland Children’s Week XX Trigger
UPDATE creature_template SET ScriptName=‘npc_childrens_week_trigger’,flags_extra=130 WHERE entry IN (22831,22851,22905,22833,22872,22838,22829,22839,22866,22867,26400);

– [Q] The Seat of the Naaru should cast Blessing of O’ros
UPDATE quest_template SET RewSpellCast=39826 WHERE entry=10956;

– All of them should be events instead of auto-complete
UPDATE quest_template SET SpecialFlags=2 WHERE entry IN (10950,10951,10952,10954,10956,10958,10962,10963,10953,10945);

– Spawn missing triggers
DELETE FROM creature WHERE id IN (22831,22833,22838,22829);
INSERT INTO creature (guid,id,map,spawnMask,phaseMask,modelid,equipment_id,position_x,position_y,position_z,orientation,spawntimesecs,spawndist,currentwaypoint,curhealth,curmana,MovementType,npcflag,unit_flags,dynamicflags) VALUES
(1705628,22831,530,1,1,0,0,-3327.79,4937.63,-99.4667,3.01952,300,0,0,6986,0,0,0,0,0),-- Outland Children’s Week Auchindoun Trigger
(1705630,22833,530,1,1,0,0,-249.702,1011.02,56.8248,1.645,300,0,0,6986,0,0,0,0,0),-- Outland Children’s Week Dark Portal Trigger
(1705871,22838,530,1,1,0,0,-2078.94,8557.77,22.8211,2.80008,300,0,0,42,0,0,0,0,0),-- Outland Children’s Week Aeris Landing Trigger
(1705872,22829,530,1,1,0,0,205.697,8549.43,22.6169,1.85123,300,0,0,6986,0,0,0,0,0); – Outland Children’s Week Sporeggar Trigger[/sql]
[/CODE]

You are not checking type here.


questId = who->ToPlayer()->GetTeam() == ALLIANCE ? QUEST_DARK_PORTAL_A : QUEST_DARK_PORTAL_H;

[CODE]if(who->GetTypeId() == TYPEID_PLAYER)

questId = who->ToPlayer()->GetTeam() == ALLIANCE ? QUEST_****_A : QUEST_****_H[/CODE]

should do the trick

[/CODE]

“UPDATE quest_template SET RewSpellCast=39826 WHERE entry=10956;”

We are trying to set all the RewSpellCast to 0 and you are assigning one? Madness