2009-02-17 18:08:26 +01:00
/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>.sourceforge.net/>
2008-10-21 13:19:26 -05:00
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
/* ScriptData
SDName: GO_Scripts
SD%Complete: 100
2010-02-04 14:43:07 +01:00
SDComment: Quest support: 4285,4287,4288(crystal pylons), 4296, 6481, 10990, 10991, 10992, Field_Repair_Bot->Teaches spell 22704. Barov_journal->Teaches spell 26089,12843,12982, 2936. Soulwell
2008-10-21 13:19:26 -05:00
SDCategory: Game Objects
EndScriptData */
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
/* ContentData
2009-03-22 23:11:55 +01:00
go_cat_figurine (the "trap" version of GO, two different exist)
2008-10-21 13:19:26 -05:00
go_northern_crystal_pylon
go_eastern_crystal_pylon
go_western_crystal_pylon
go_barov_journal
2009-05-31 22:49:30 +02:00
go_ethereum_prison
go_ethereum_stasis
go_sacred_fire_of_life
go_shrine_of_the_birds
2009-09-19 16:01:08 -07:00
go_southfury_moonstone
2008-10-21 13:19:26 -05:00
go_field_repair_bot_74A
go_orb_of_command
2009-07-24 22:42:17 +02:00
go_resonite_cask
2008-10-21 13:19:26 -05:00
go_tablet_of_madness
2009-04-06 21:14:51 +02:00
go_tablet_of_the_seven
2009-05-31 22:49:30 +02:00
go_tele_to_dalaran_crystal
go_tele_to_violet_stand
2009-10-24 21:26:37 +02:00
go_rusty_cage
2009-10-29 21:37:45 +01:00
go_scourge_cage
2009-12-20 13:22:25 -03:00
go_jotunheim_cage
2010-01-04 00:08:00 -03:00
go_table_theka
2010-02-04 21:07:12 +01:00
go_soulwell
2008-10-21 13:19:26 -05:00
EndContentData */
2009-10-17 15:51:44 -07:00
2010-01-19 11:36:05 +01:00
#include "ScriptedPch.h"
2009-10-17 15:51:44 -07:00
2009-03-22 23:11:55 +01:00
/*######
## go_cat_figurine
######*/
2009-10-17 15:51:44 -07:00
2009-10-17 07:42:48 -07:00
enum eCatFigurine
2009-03-22 23:11:55 +01:00
{
SPELL_SUMMON_GHOST_SABER = 5968 ,
};
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_cat_figurine ( Player * pPlayer , GameObject * pGO )
2009-03-22 23:11:55 +01:00
{
2009-08-14 00:02:13 +02:00
pPlayer -> CastSpell ( pPlayer , SPELL_SUMMON_GHOST_SABER , true );
2009-03-22 23:11:55 +01:00
return false ;
}
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
/*######
## go_crystal_pylons (3x)
######*/
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_northern_crystal_pylon ( Player * pPlayer , GameObject * pGO )
2008-10-21 13:19:26 -05:00
{
2009-11-17 16:23:12 -08:00
if ( pGO -> GetGoType () == GAMEOBJECT_TYPE_QUESTGIVER )
2008-10-21 13:19:26 -05:00
{
2009-11-17 16:23:12 -08:00
pPlayer -> PrepareQuestMenu ( pGO -> GetGUID ());
pPlayer -> SendPreparedQuest ( pGO -> GetGUID ());
2008-10-21 13:19:26 -05:00
}
2009-10-17 15:51:44 -07:00
2009-08-14 00:02:13 +02:00
if ( pPlayer -> GetQuestStatus ( 4285 ) == QUEST_STATUS_INCOMPLETE )
pPlayer -> AreaExploredOrEventHappens ( 4285 );
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
return true ;
}
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_eastern_crystal_pylon ( Player * pPlayer , GameObject * pGO )
2008-10-21 13:19:26 -05:00
{
2009-11-17 16:23:12 -08:00
if ( pGO -> GetGoType () == GAMEOBJECT_TYPE_QUESTGIVER )
2008-10-21 13:19:26 -05:00
{
2009-11-17 16:23:12 -08:00
pPlayer -> PrepareQuestMenu ( pGO -> GetGUID ());
pPlayer -> SendPreparedQuest ( pGO -> GetGUID ());
2008-10-21 13:19:26 -05:00
}
2009-10-17 15:51:44 -07:00
2009-08-14 00:02:13 +02:00
if ( pPlayer -> GetQuestStatus ( 4287 ) == QUEST_STATUS_INCOMPLETE )
pPlayer -> AreaExploredOrEventHappens ( 4287 );
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
return true ;
}
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_western_crystal_pylon ( Player * pPlayer , GameObject * pGO )
2008-10-21 13:19:26 -05:00
{
2009-11-17 16:23:12 -08:00
if ( pGO -> GetGoType () == GAMEOBJECT_TYPE_QUESTGIVER )
2008-10-21 13:19:26 -05:00
{
2009-11-17 16:23:12 -08:00
pPlayer -> PrepareQuestMenu ( pGO -> GetGUID ());
pPlayer -> SendPreparedQuest ( pGO -> GetGUID ());
2008-10-21 13:19:26 -05:00
}
2009-10-17 15:51:44 -07:00
2009-08-14 00:02:13 +02:00
if ( pPlayer -> GetQuestStatus ( 4288 ) == QUEST_STATUS_INCOMPLETE )
pPlayer -> AreaExploredOrEventHappens ( 4288 );
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
return true ;
}
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
/*######
## go_barov_journal
######*/
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_barov_journal ( Player * pPlayer , GameObject * pGO )
2008-10-21 13:19:26 -05:00
{
2009-08-14 00:02:13 +02:00
if ( pPlayer -> HasSkill ( SKILL_TAILORING ) && pPlayer -> GetBaseSkillValue ( SKILL_TAILORING ) >= 280 && ! pPlayer -> HasSpell ( 26086 ))
2008-10-21 13:19:26 -05:00
{
2009-08-14 00:02:13 +02:00
pPlayer -> CastSpell ( pPlayer , 26095 , false );
2008-10-21 13:19:26 -05:00
}
return true ;
}
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
/*######
## go_field_repair_bot_74A
######*/
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_field_repair_bot_74A ( Player * pPlayer , GameObject * pGO )
2008-10-21 13:19:26 -05:00
{
2009-08-14 00:02:13 +02:00
if ( pPlayer -> HasSkill ( SKILL_ENGINERING ) && pPlayer -> GetBaseSkillValue ( SKILL_ENGINERING ) >= 300 && ! pPlayer -> HasSpell ( 22704 ))
2008-10-21 13:19:26 -05:00
{
2009-08-14 00:02:13 +02:00
pPlayer -> CastSpell ( pPlayer , 22864 , false );
2008-10-21 13:19:26 -05:00
}
return true ;
}
2009-10-17 15:51:44 -07:00
2009-03-22 23:11:55 +01:00
/*######
## go_gilded_brazier
######*/
2009-10-17 15:51:44 -07:00
2009-10-17 07:42:48 -07:00
enum eGildedBrazier
2009-03-22 23:11:55 +01:00
{
NPC_STILLBLADE = 17716 ,
};
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_gilded_brazier ( Player * pPlayer , GameObject * pGO )
2009-03-22 23:11:55 +01:00
{
if ( pGO -> GetGoType () == GAMEOBJECT_TYPE_GOOBER )
if ( Creature * pCreature = pPlayer -> SummonCreature ( NPC_STILLBLADE , 8087.632 , - 7542.740 , 151.568 , 0.122 , TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 5000 ))
pCreature -> AI () -> AttackStart ( pPlayer );
2009-10-17 15:51:44 -07:00
2009-03-22 23:11:55 +01:00
return true ;
}
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
/*######
## go_orb_of_command
######*/
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_orb_of_command ( Player * pPlayer , GameObject * pGO )
2008-10-21 13:19:26 -05:00
{
2009-08-14 00:02:13 +02:00
if ( pPlayer -> GetQuestRewardStatus ( 7761 ))
pPlayer -> CastSpell ( pPlayer , 23460 , true );
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
return true ;
}
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
/*######
## go_tablet_of_madness
######*/
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_tablet_of_madness ( Player * pPlayer , GameObject * pGO )
2008-10-21 13:19:26 -05:00
{
2009-08-14 00:02:13 +02:00
if ( pPlayer -> HasSkill ( SKILL_ALCHEMY ) && pPlayer -> GetSkillValue ( SKILL_ALCHEMY ) >= 300 && ! pPlayer -> HasSpell ( 24266 ))
2008-10-21 13:19:26 -05:00
{
2009-08-14 00:02:13 +02:00
pPlayer -> CastSpell ( pPlayer , 24267 , false );
2008-10-21 13:19:26 -05:00
}
return true ;
}
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
/*######
## go_tablet_of_the_seven
######*/
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
//TODO: use gossip option ("Transcript the Tablet") instead, if Trinity adds support.
2009-11-17 16:23:12 -08:00
bool GOHello_go_tablet_of_the_seven ( Player * pPlayer , GameObject * pGO )
2008-10-21 13:19:26 -05:00
{
2009-11-17 16:23:12 -08:00
if ( pGO -> GetGoType () != GAMEOBJECT_TYPE_QUESTGIVER )
2008-10-21 13:19:26 -05:00
return true ;
2009-10-17 15:51:44 -07:00
2009-08-14 00:02:13 +02:00
if ( pPlayer -> GetQuestStatus ( 4296 ) == QUEST_STATUS_INCOMPLETE )
pPlayer -> CastSpell ( pPlayer , 15065 , false );
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
return true ;
}
2009-10-17 15:51:44 -07:00
2009-03-23 18:07:58 +01:00
/*#####
## go_jump_a_tron
######*/
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_jump_a_tron ( Player * pPlayer , GameObject * pGO )
2009-03-23 18:07:58 +01:00
{
2009-08-14 00:02:13 +02:00
if ( pPlayer -> GetQuestStatus ( 10111 ) == QUEST_STATUS_INCOMPLETE )
pPlayer -> CastSpell ( pPlayer , 33382 , true );
2009-10-17 15:51:44 -07:00
2009-03-23 18:07:58 +01:00
return true ;
}
2009-10-17 15:51:44 -07:00
2009-03-24 00:06:47 +01:00
/*######
## go_ethereum_prison
######*/
2009-10-17 15:51:44 -07:00
2009-10-17 07:42:48 -07:00
enum eEthereumPrison
2009-05-31 22:49:30 +02:00
{
SPELL_REP_LC = 39456 ,
SPELL_REP_SHAT = 39457 ,
SPELL_REP_CE = 39460 ,
SPELL_REP_CON = 39474 ,
SPELL_REP_KT = 39475 ,
SPELL_REP_SPOR = 39476
};
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
const uint32 NpcPrisonEntry [] =
2009-03-24 00:06:47 +01:00
{
2009-05-31 22:49:30 +02:00
22810 , 22811 , 22812 , 22813 , 22814 , 22815 , //good guys
20783 , 20784 , 20785 , 20786 , 20788 , 20789 , 20790 //bad guys
2009-03-24 00:06:47 +01:00
};
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_ethereum_prison ( Player * pPlayer , GameObject * pGO )
2009-03-24 00:06:47 +01:00
{
2009-05-31 22:49:30 +02:00
int Random = rand () % ( sizeof ( NpcPrisonEntry ) / sizeof ( uint32 ));
2009-10-17 15:51:44 -07:00
2009-08-14 00:02:13 +02:00
if ( Creature * pCreature = pPlayer -> SummonCreature ( NpcPrisonEntry [ Random ],
2009-11-17 16:23:12 -08:00
pGO -> GetPositionX (), pGO -> GetPositionY (), pGO -> GetPositionZ (), pGO -> GetAngle ( pPlayer ),
2009-05-31 22:49:30 +02:00
TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 30000 ))
{
2009-08-14 00:02:13 +02:00
if ( ! pCreature -> IsHostileTo ( pPlayer ))
2009-05-31 22:49:30 +02:00
{
uint32 Spell = 0 ;
2009-10-17 15:51:44 -07:00
2009-08-14 20:12:58 +02:00
if ( FactionTemplateEntry const * pFaction = pCreature -> getFactionTemplateEntry ())
2009-05-31 22:49:30 +02:00
{
2009-08-14 20:12:58 +02:00
switch ( pFaction -> faction )
{
case 1011 : Spell = SPELL_REP_LC ; break ;
case 935 : Spell = SPELL_REP_SHAT ; break ;
case 942 : Spell = SPELL_REP_CE ; break ;
case 933 : Spell = SPELL_REP_CON ; break ;
case 989 : Spell = SPELL_REP_KT ; break ;
case 970 : Spell = SPELL_REP_SPOR ; break ;
}
2009-10-17 15:51:44 -07:00
2009-08-14 20:12:58 +02:00
if ( Spell )
pCreature -> CastSpell ( pPlayer , Spell , false );
else
2009-08-15 00:32:04 +02:00
error_log ( "TSCR: go_ethereum_prison summoned Creature (entry %u) but faction (%u) are not expected by script." , pCreature -> GetEntry (), pCreature -> getFaction ());
2009-05-31 22:49:30 +02:00
}
}
}
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
return false ;
2009-03-24 00:06:47 +01:00
}
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
/*######
## go_ethereum_stasis
######*/
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
const uint32 NpcStasisEntry [] =
{
22825 , 20888 , 22827 , 22826 , 22828
};
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_ethereum_stasis ( Player * pPlayer , GameObject * pGO )
2009-05-31 22:49:30 +02:00
{
int Random = rand () % ( sizeof ( NpcStasisEntry ) / sizeof ( uint32 ));
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
pPlayer -> SummonCreature ( NpcStasisEntry [ Random ],
2009-11-17 16:23:12 -08:00
pGO -> GetPositionX (), pGO -> GetPositionY (), pGO -> GetPositionZ (), pGO -> GetAngle ( pPlayer ),
2009-05-31 22:49:30 +02:00
TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 30000 );
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
return false ;
2009-03-24 00:06:47 +01:00
}
2009-10-17 15:51:44 -07:00
2009-07-24 22:42:17 +02:00
/*######
## go_resonite_cask
######*/
2009-10-17 15:51:44 -07:00
2009-10-17 07:42:48 -07:00
enum eResoniteCask
2009-07-24 22:42:17 +02:00
{
NPC_GOGGEROC = 11920
};
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_resonite_cask ( Player * pPlayer , GameObject * pGO )
2009-07-24 22:42:17 +02:00
{
if ( pGO -> GetGoType () == GAMEOBJECT_TYPE_GOOBER )
pGO -> SummonCreature ( NPC_GOGGEROC , 0.0f , 0.0f , 0.0f , 0.0f , TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 300000 );
2009-10-17 15:51:44 -07:00
2009-07-24 22:42:17 +02:00
return false ;
}
2009-10-17 15:51:44 -07:00
2009-03-27 20:28:17 +01:00
/*######
## go_sacred_fire_of_life
######*/
2009-10-17 15:51:44 -07:00
2009-03-27 20:28:17 +01:00
#define NPC_ARIKARA 10882
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_sacred_fire_of_life ( Player * pPlayer , GameObject * pGO )
2009-03-27 20:28:17 +01:00
{
if ( pGO -> GetGoType () == GAMEOBJECT_TYPE_GOOBER )
pPlayer -> SummonCreature ( NPC_ARIKARA , - 5008.338 , - 2118.894 , 83.657 , 0.874 , TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 30000 );
2009-10-17 15:51:44 -07:00
2009-03-27 20:28:17 +01:00
return true ;
}
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
/*######
## go_shrine_of_the_birds
######*/
2009-10-17 15:51:44 -07:00
2009-10-17 07:42:48 -07:00
enum eShrineOfTheBirds
2009-05-31 22:49:30 +02:00
{
NPC_HAWK_GUARD = 22992 ,
NPC_EAGLE_GUARD = 22993 ,
NPC_FALCON_GUARD = 22994 ,
GO_SHRINE_HAWK = 185551 ,
GO_SHRINE_EAGLE = 185547 ,
GO_SHRINE_FALCON = 185553
};
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_shrine_of_the_birds ( Player * pPlayer , GameObject * pGO )
2009-05-31 22:49:30 +02:00
{
uint32 BirdEntry = 0 ;
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
float fX , fY , fZ ;
2009-11-17 16:23:12 -08:00
pGO -> GetClosePoint ( fX , fY , fZ , pGO -> GetObjectSize (), INTERACTION_DISTANCE );
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
switch ( pGO -> GetEntry ())
2009-05-31 22:49:30 +02:00
{
case GO_SHRINE_HAWK :
BirdEntry = NPC_HAWK_GUARD ;
break ;
case GO_SHRINE_EAGLE :
BirdEntry = NPC_EAGLE_GUARD ;
break ;
case GO_SHRINE_FALCON :
BirdEntry = NPC_FALCON_GUARD ;
break ;
}
2009-10-17 15:51:44 -07:00
2009-08-14 00:02:13 +02:00
if ( BirdEntry )
2009-11-17 16:23:12 -08:00
pPlayer -> SummonCreature ( BirdEntry , fX , fY , fZ , pGO -> GetOrientation (), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 60000 );
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
return false ;
}
2009-10-17 15:51:44 -07:00
2009-09-19 16:01:08 -07:00
/*######
## go_southfury_moonstone
######*/
2009-10-17 15:51:44 -07:00
2009-10-17 07:42:48 -07:00
enum eSouthfury
2009-09-19 16:01:08 -07:00
{
NPC_RIZZLE = 23002 ,
SPELL_BLACKJACK = 39865 , //stuns player
SPELL_SUMMON_RIZZLE = 39866
2009-10-17 15:51:44 -07:00
2009-09-19 16:01:08 -07:00
};
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_southfury_moonstone ( Player * pPlayer , GameObject * pGO )
2009-09-19 16:01:08 -07:00
{
//implicitTarget=48 not implemented as of writing this code, and manual summon may be just ok for our purpose
//pPlayer->CastSpell(pPlayer,SPELL_SUMMON_RIZZLE,false);
2009-10-17 15:51:44 -07:00
2009-09-19 16:01:08 -07:00
if ( Creature * pCreature = pPlayer -> SummonCreature ( NPC_RIZZLE , 0.0f , 0.0f , 0.0f , 0.0f , TEMPSUMMON_DEAD_DESPAWN , 0 ))
pCreature -> CastSpell ( pPlayer , SPELL_BLACKJACK , false );
2009-10-17 15:51:44 -07:00
2009-09-19 16:01:08 -07:00
return false ;
}
2009-10-17 15:51:44 -07:00
2009-04-18 21:34:10 -05:00
/*######
## go_tele_to_dalaran_crystal
######*/
2009-10-17 15:51:44 -07:00
2009-10-17 07:42:48 -07:00
enum eDalaranCrystal
2009-04-18 21:34:10 -05:00
{
QUEST_LEARN_LEAVE_RETURN = 12790 ,
QUEST_TELE_CRYSTAL_FLAG = 12845
};
2009-10-17 15:51:44 -07:00
2010-03-01 20:35:13 -03:00
#define GO_TELE_TO_DALARAN_CRYSTAL_FAILED "This teleport crystal cannot be used until the teleport crystal in Dalaran has been used at least once."
2009-11-17 16:23:12 -08:00
bool GOHello_go_tele_to_dalaran_crystal ( Player * pPlayer , GameObject * pGO )
2009-04-18 21:34:10 -05:00
{
if ( pPlayer -> GetQuestRewardStatus ( QUEST_TELE_CRYSTAL_FLAG ))
2010-03-01 20:35:13 -03:00
{
2009-04-18 21:34:10 -05:00
return false ;
2010-03-01 20:35:13 -03:00
}
else
pPlayer -> GetSession () -> SendNotification ( GO_TELE_TO_DALARAN_CRYSTAL_FAILED );
2009-10-17 15:51:44 -07:00
2009-04-18 21:34:10 -05:00
return true ;
}
2009-10-17 15:51:44 -07:00
2009-04-18 21:34:10 -05:00
/*######
## go_tele_to_violet_stand
######*/
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_tele_to_violet_stand ( Player * pPlayer , GameObject * pGO )
2009-04-18 21:34:10 -05:00
{
if ( pPlayer -> GetQuestRewardStatus ( QUEST_LEARN_LEAVE_RETURN ) || pPlayer -> GetQuestStatus ( QUEST_LEARN_LEAVE_RETURN ) == QUEST_STATUS_INCOMPLETE )
return false ;
2009-10-17 15:51:44 -07:00
2009-04-18 21:34:10 -05:00
return true ;
}
2009-10-17 15:51:44 -07:00
2009-09-19 12:50:58 -07:00
/*######
## go_fel_crystalforge
######*/
2009-10-17 15:51:44 -07:00
2009-10-01 23:30:55 -07:00
#define GOSSIP_FEL_CRYSTALFORGE_TEXT 31000
#define GOSSIP_FEL_CRYSTALFORGE_ITEM_TEXT_RETURN 31001
#define GOSSIP_FEL_CRYSTALFORGE_ITEM_1 "Purchase 1 Unstable Flask of the Beast for the cost of 10 Apexis Shards"
#define GOSSIP_FEL_CRYSTALFORGE_ITEM_5 "Purchase 5 Unstable Flask of the Beast for the cost of 50 Apexis Shards"
#define GOSSIP_FEL_CRYSTALFORGE_ITEM_RETURN "Use the fel crystalforge to make another purchase."
2009-10-17 15:51:44 -07:00
2009-10-17 07:42:48 -07:00
enum eFelCrystalforge
2009-09-19 12:50:58 -07:00
{
SPELL_CREATE_1_FLASK_OF_BEAST = 40964 ,
SPELL_CREATE_5_FLASK_OF_BEAST = 40965 ,
};
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_fel_crystalforge ( Player * pPlayer , GameObject * pGO )
2009-09-19 12:50:58 -07:00
{
2009-10-01 23:30:55 -07:00
if ( pGO -> GetGoType () == GAMEOBJECT_TYPE_QUESTGIVER ) /* != GAMEOBJECT_TYPE_QUESTGIVER) */
pPlayer -> PrepareQuestMenu ( pGO -> GetGUID ()); /* return true*/
2009-10-17 15:51:44 -07:00
2009-10-01 23:30:55 -07:00
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_FEL_CRYSTALFORGE_ITEM_1 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF );
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_FEL_CRYSTALFORGE_ITEM_5 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 1 );
2009-10-17 15:51:44 -07:00
2009-10-01 23:30:55 -07:00
pPlayer -> SEND_GOSSIP_MENU ( GOSSIP_FEL_CRYSTALFORGE_TEXT , pGO -> GetGUID ());
2009-10-17 15:51:44 -07:00
2009-10-01 23:30:55 -07:00
return true ;
}
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOSelect_go_fel_crystalforge ( Player * pPlayer , GameObject * pGO , uint32 uiSender , uint32 uiAction )
2009-10-01 23:30:55 -07:00
{
switch ( uiAction )
{
case GOSSIP_ACTION_INFO_DEF :
pPlayer -> CastSpell ( pPlayer , SPELL_CREATE_1_FLASK_OF_BEAST , false );
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_FEL_CRYSTALFORGE_ITEM_RETURN , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 2 );
pPlayer -> SEND_GOSSIP_MENU ( GOSSIP_FEL_CRYSTALFORGE_ITEM_TEXT_RETURN , pGO -> GetGUID ());
break ;
case GOSSIP_ACTION_INFO_DEF + 1 :
pPlayer -> CastSpell ( pPlayer , SPELL_CREATE_5_FLASK_OF_BEAST , false );
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_FEL_CRYSTALFORGE_ITEM_RETURN , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 2 );
pPlayer -> SEND_GOSSIP_MENU ( GOSSIP_FEL_CRYSTALFORGE_ITEM_TEXT_RETURN , pGO -> GetGUID ());
break ;
case GOSSIP_ACTION_INFO_DEF + 2 :
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_FEL_CRYSTALFORGE_ITEM_1 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF );
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_FEL_CRYSTALFORGE_ITEM_5 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 1 );
pPlayer -> SEND_GOSSIP_MENU ( GOSSIP_FEL_CRYSTALFORGE_TEXT , pGO -> GetGUID ());
break ;
}
return true ;
2009-09-19 12:50:58 -07:00
}
2009-10-17 15:51:44 -07:00
2009-09-19 12:50:58 -07:00
/*######
## go_bashir_crystalforge
######*/
2009-10-17 15:51:44 -07:00
2009-10-17 07:42:48 -07:00
enum eBashirCrystalforge
2009-09-19 12:50:58 -07:00
{
SPELL_CREATE_1_FLASK_OF_SORCERER = 40968 ,
SPELL_CREATE_5_FLASK_OF_SORCERER = 40970 ,
};
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_bashir_crystalforge ( Player * pPlayer , GameObject * pGO )
2009-09-19 12:50:58 -07:00
{
pPlayer -> CastSpell ( pPlayer , SPELL_CREATE_1_FLASK_OF_SORCERER , false );
return false ;
}
2009-10-17 15:51:44 -07:00
2009-10-13 20:21:50 +02:00
/*######
## matrix_punchograph
######*/
2009-10-17 15:51:44 -07:00
2009-10-17 07:42:48 -07:00
enum eMatrixPunchograph
2009-10-13 20:21:50 +02:00
{
ITEM_WHITE_PUNCH_CARD = 9279 ,
ITEM_YELLOW_PUNCH_CARD = 9280 ,
ITEM_BLUE_PUNCH_CARD = 9282 ,
ITEM_RED_PUNCH_CARD = 9281 ,
ITEM_PRISMATIC_PUNCH_CARD = 9316 ,
SPELL_YELLOW_PUNCH_CARD = 11512 ,
SPELL_BLUE_PUNCH_CARD = 11525 ,
SPELL_RED_PUNCH_CARD = 11528 ,
SPELL_PRISMATIC_PUNCH_CARD = 11545 ,
MATRIX_PUNCHOGRAPH_3005_A = 142345 ,
MATRIX_PUNCHOGRAPH_3005_B = 142475 ,
MATRIX_PUNCHOGRAPH_3005_C = 142476 ,
MATRIX_PUNCHOGRAPH_3005_D = 142696 ,
};
2009-10-17 15:51:44 -07:00
2009-11-17 16:23:12 -08:00
bool GOHello_go_matrix_punchograph ( Player * pPlayer , GameObject * pGO )
2009-10-13 20:21:50 +02:00
{
2009-11-17 16:23:12 -08:00
switch ( pGO -> GetEntry ())
2009-10-13 20:21:50 +02:00
{
case MATRIX_PUNCHOGRAPH_3005_A :
2009-10-17 13:33:07 -07:00
if ( pPlayer -> HasItemCount ( ITEM_WHITE_PUNCH_CARD , 1 ))
2009-10-13 20:21:50 +02:00
{
pPlayer -> DestroyItemCount ( ITEM_WHITE_PUNCH_CARD , 1 , true );
pPlayer -> CastSpell ( pPlayer , SPELL_YELLOW_PUNCH_CARD , true );
}
break ;
case MATRIX_PUNCHOGRAPH_3005_B :
if ( pPlayer -> HasItemCount ( ITEM_YELLOW_PUNCH_CARD , 1 ))
{
pPlayer -> DestroyItemCount ( ITEM_YELLOW_PUNCH_CARD , 1 , true );
pPlayer -> CastSpell ( pPlayer , SPELL_BLUE_PUNCH_CARD , true );
}
break ;
case MATRIX_PUNCHOGRAPH_3005_C :
if ( pPlayer -> HasItemCount ( ITEM_BLUE_PUNCH_CARD , 1 ))
{
pPlayer -> DestroyItemCount ( ITEM_BLUE_PUNCH_CARD , 1 , true );
pPlayer -> CastSpell ( pPlayer , SPELL_RED_PUNCH_CARD , true );
}
break ;
case MATRIX_PUNCHOGRAPH_3005_D :
if ( pPlayer -> HasItemCount ( ITEM_RED_PUNCH_CARD , 1 ))
{
pPlayer -> DestroyItemCount ( ITEM_RED_PUNCH_CARD , 1 , true );
2009-11-22 00:46:38 -08:00
pPlayer -> CastSpell ( pPlayer , SPELL_PRISMATIC_PUNCH_CARD , true );
2009-10-13 20:21:50 +02:00
}
break ;
default :
break ;
}
return false ;
}
2009-10-17 15:51:44 -07:00
2009-11-21 19:25:29 -08:00
/*######
## go_rusty_cage
######*/
2009-10-24 21:26:37 +02:00
enum eRustyCage
{
NPC_GOBLIN_PRISIONER = 29466
};
2009-11-17 16:23:12 -08:00
bool GOHello_go_rusty_cage ( Player * pPlayer , GameObject * pGO )
2009-10-24 21:26:37 +02:00
{
2009-11-17 16:23:12 -08:00
if ( Creature * pGoblinPrisoner = pGO -> FindNearestCreature ( NPC_GOBLIN_PRISIONER , 5.0f , true ))
2009-10-24 21:26:37 +02:00
{
pGO -> SetGoState ( GO_STATE_ACTIVE );
2009-11-17 16:23:12 -08:00
pPlayer -> KilledMonsterCredit ( NPC_GOBLIN_PRISIONER , pGoblinPrisoner -> GetGUID ());
pGoblinPrisoner -> DisappearAndDie ();
2009-10-24 21:26:37 +02:00
}
return true ;
}
2009-11-21 19:25:29 -08:00
/*######
## go_scourge_cage
######*/
2009-10-29 21:37:45 +01:00
enum eScourgeCage
{
NPC_SCOURGE_PRISONER = 25610
};
2009-11-17 16:23:12 -08:00
bool GOHello_go_scourge_cage ( Player * pPlayer , GameObject * pGO )
2009-10-29 21:37:45 +01:00
{
2009-11-17 16:23:12 -08:00
if ( Creature * pNearestPrisoner = pGO -> FindNearestCreature ( NPC_SCOURGE_PRISONER , 5.0f , true ))
2009-10-29 21:37:45 +01:00
{
pGO -> SetGoState ( GO_STATE_ACTIVE );
2009-11-17 16:23:12 -08:00
pPlayer -> KilledMonsterCredit ( NPC_SCOURGE_PRISONER , pNearestPrisoner -> GetGUID ());
pNearestPrisoner -> DisappearAndDie ();
2009-10-29 21:37:45 +01:00
}
2009-12-20 13:22:25 -03:00
2009-10-29 21:37:45 +01:00
return true ;
}
2009-11-21 19:25:29 -08:00
/*######
## go_arcane_prison
######*/
2009-11-17 16:23:12 -08:00
enum eArcanePrison
{
QUEST_PRISON_BREAK = 11587 ,
SPELL_ARCANE_PRISONER_KILL_CREDIT = 45456
};
bool GOHello_go_arcane_prison ( Player * pPlayer , GameObject * pGO )
{
if ( pPlayer -> GetQuestStatus ( QUEST_PRISON_BREAK ) == QUEST_STATUS_INCOMPLETE )
{
pGO -> SummonCreature ( 25318 , 3485.089844 , 6115.7422188 , 70.966812 , 0 , TEMPSUMMON_TIMED_DESPAWN , 60000 );
pPlayer -> CastSpell ( pPlayer , SPELL_ARCANE_PRISONER_KILL_CREDIT , true );
return true ;
} else
return false ;
}
2009-11-21 19:25:29 -08:00
/*######
## go_blood_filled_orb
######*/
#define NPC_ZELEMAR 17830
bool GOHello_go_blood_filled_orb ( Player * pPlayer , GameObject * pGO )
{
if ( pGO -> GetGoType () == GAMEOBJECT_TYPE_GOOBER )
pPlayer -> SummonCreature ( NPC_ZELEMAR , - 369.746 , 166.759 , - 21.50 , 5.235 , TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 30000 );
return true ;
}
2009-12-20 13:22:25 -03:00
/*######
## go_jotunheim_cage
######*/
enum eJotunheimCage
{
NPC_EBON_BLADE_PRISONER_HUMAN = 30186 ,
NPC_EBON_BLADE_PRISONER_NE = 30194 ,
NPC_EBON_BLADE_PRISONER_TROLL = 30196 ,
NPC_EBON_BLADE_PRISONER_ORC = 30195 ,
SPELL_SUMMON_BLADE_KNIGHT_H = 56207 ,
SPELL_SUMMON_BLADE_KNIGHT_NE = 56209 ,
SPELL_SUMMON_BLADE_KNIGHT_ORC = 56212 ,
SPELL_SUMMON_BLADE_KNIGHT_TROLL = 56214
};
bool GOHello_go_jotunheim_cage ( Player * pPlayer , GameObject * pGO )
{
Creature * pPrisoner ;
pPrisoner = NULL ;
if (( pPrisoner = pGO -> FindNearestCreature ( NPC_EBON_BLADE_PRISONER_HUMAN , 5.0f , true )) ||
( pPrisoner = pGO -> FindNearestCreature ( NPC_EBON_BLADE_PRISONER_TROLL , 5.0f , true )) ||
( pPrisoner = pGO -> FindNearestCreature ( NPC_EBON_BLADE_PRISONER_ORC , 5.0f , true )) ||
( pPrisoner = pGO -> FindNearestCreature ( NPC_EBON_BLADE_PRISONER_NE , 5.0f , true )))
{
if ( pPrisoner && pPrisoner -> isAlive ())
{
pPrisoner -> DisappearAndDie ();
pPlayer -> KilledMonsterCredit ( NPC_EBON_BLADE_PRISONER_HUMAN , 0 );
switch ( pPrisoner -> GetEntry ())
{
case NPC_EBON_BLADE_PRISONER_HUMAN :
pPlayer -> CastSpell ( pPlayer , SPELL_SUMMON_BLADE_KNIGHT_H , true );
break ;
case NPC_EBON_BLADE_PRISONER_NE :
pPlayer -> CastSpell ( pPlayer , SPELL_SUMMON_BLADE_KNIGHT_NE , true );
break ;
case NPC_EBON_BLADE_PRISONER_TROLL :
pPlayer -> CastSpell ( pPlayer , SPELL_SUMMON_BLADE_KNIGHT_TROLL , true );
break ;
case NPC_EBON_BLADE_PRISONER_ORC :
pPlayer -> CastSpell ( pPlayer , SPELL_SUMMON_BLADE_KNIGHT_ORC , true );
break ;
}
}
}
return true ;
}
2010-01-04 00:08:00 -03:00
enum eTableTheka
{
GOSSIP_TABLE_THEKA = 1653 ,
QUEST_SPIDER_GOLD = 2936
};
bool GOHello_go_table_theka ( Player * pPlayer , GameObject * pGO )
{
if ( pPlayer -> GetQuestStatus ( QUEST_SPIDER_GOLD ) == QUEST_STATUS_INCOMPLETE )
pPlayer -> AreaExploredOrEventHappens ( QUEST_SPIDER_GOLD );
pPlayer -> SEND_GOSSIP_MENU ( GOSSIP_TABLE_THEKA , pGO -> GetGUID ());
return true ;
}
2009-12-20 13:22:25 -03:00
2010-01-13 00:39:05 -07:00
/*######
2010-02-04 14:43:07 +01:00
## go_inconspicuous_landmark
######*/
2010-01-13 00:39:05 -07:00
enum eInconspicuousLandmark
{
SPELL_SUMMON_PIRATES_TREASURE_AND_TRIGGER_MOB = 11462 ,
ITEM_CUERGOS_KEY = 9275 ,
};
bool GOHello_go_inconspicuous_landmark ( Player * pPlayer , GameObject * pGO )
{
if ( pPlayer -> HasItemCount ( ITEM_CUERGOS_KEY , 1 ))
return false ;
pPlayer -> CastSpell ( pPlayer , SPELL_SUMMON_PIRATES_TREASURE_AND_TRIGGER_MOB , true );
return true ;
}
2010-02-04 14:43:07 +01:00
/*######
## go_soulwell
######*/
bool GOHello_go_soulwell ( Player * pPlayer , GameObject * pGO )
{
Unit * caster = pGO -> GetOwner ( false );
if ( ! caster || caster -> GetTypeId () != TYPEID_PLAYER )
return true ;
if ( ! pPlayer -> IsInSameRaidWith ( static_cast < Player *> ( caster )))
return true ;
// Repeating this at every use is ugly and inefficient. But as long as we don't have proper
// GO scripting with at least On Create and On Update events, the other options are no less
// ugly and hacky.
uint32 newSpell = 0 ;
if ( pGO -> GetEntry () == 193169 ) // Soulwell for rank 2
{
2010-02-15 18:23:39 +01:00
if ( caster -> HasAura ( 18693 )) // Improved Healthstone rank 2
newSpell = 58898 ;
else if ( caster -> HasAura ( 18692 )) // Improved Healthstone rank 1
newSpell = 58896 ;
else newSpell = 58890 ;
2010-02-04 14:43:07 +01:00
}
else if ( pGO -> GetEntry () == 181621 ) // Soulwell for rank 1
{
2010-02-15 18:23:39 +01:00
if ( caster -> HasAura ( 18693 )) // Improved Healthstone rank 2
newSpell = 34150 ;
else if ( caster -> HasAura ( 18692 )) // Improved Healthstone rank 1
newSpell = 34149 ;
else newSpell = 34130 ;
2010-02-04 14:43:07 +01:00
}
pGO -> AddUse ();
pPlayer -> CastSpell ( pPlayer , newSpell , true );
return true ;
}
2010-02-23 20:36:56 +01:00
/*######
## Quest 11255: Prisoners of Wyrmskull
## go_dragonflayer_cage
######*/
enum ePrisonersOfWyrmskull
{
QUEST_PRISONERS_OF_WYRMSKULL = 11255 ,
NPC_PRISONER_PRIEST = 24086 ,
NPC_PRISONER_MAGE = 24088 ,
NPC_PRISONER_WARRIOR = 24089 ,
NPC_PRISONER_PALADIN = 24090
};
bool GOHello_go_dragonflayer_cage ( Player * pPlayer , GameObject * pGO )
{
Creature * pPrisoner = NULL ;
Quest const * qInfo = objmgr . GetQuestTemplate ( QUEST_PRISONERS_OF_WYRMSKULL );
if ( pPlayer -> GetQuestStatus ( QUEST_PRISONERS_OF_WYRMSKULL ) == QUEST_STATUS_INCOMPLETE &&
(( pPrisoner = pGO -> FindNearestCreature ( NPC_PRISONER_PRIEST , 2.0f )) ||
( pPrisoner = pGO -> FindNearestCreature ( NPC_PRISONER_MAGE , 2.0f )) ||
( pPrisoner = pGO -> FindNearestCreature ( NPC_PRISONER_WARRIOR , 2.0f )) ||
( pPrisoner = pGO -> FindNearestCreature ( NPC_PRISONER_PALADIN , 2.0f ))) && pPrisoner -> isAlive ())
{
//TODO: prisoner should help player for a short period of time
pPlayer -> KilledMonsterCredit ( qInfo -> ReqCreatureOrGOId [ 0 ], 0 );
pPrisoner -> DisappearAndDie ();
}
return true ;
}
2010-02-18 22:22:09 +01:00
/*######
## Quest 11560: Oh Noes, the Tadpoles!
## go_tadpole_cage
######*/
enum eTadpoles
{
QUEST_OH_NOES_THE_TADPOLES = 11560 ,
NPC_WINTERFIN_TADPOLE = 25201
};
bool GOHello_go_tadpole_cage ( Player * pPlayer , GameObject * pGO )
{
Creature * pTadpole ;
if ( pPlayer -> GetQuestStatus ( QUEST_OH_NOES_THE_TADPOLES ) == QUEST_STATUS_INCOMPLETE &&
( pTadpole = pGO -> FindNearestCreature ( NPC_WINTERFIN_TADPOLE , 1.0f )))
{
pGO -> UseDoorOrButton ();
pTadpole -> DisappearAndDie ();
pPlayer -> KilledMonsterCredit ( NPC_WINTERFIN_TADPOLE , 0 );
//FIX: Summon minion tadpole
}
return true ;
}
2010-01-13 00:39:05 -07:00
2010-02-24 16:51:15 +01:00
/*######
## Quest 14096 & 14142: You've Really Done It This Time, Kul
## go_black_cage
######*/
enum eReallyDoneItThisTime
{
QUEST_ALLIANCE_YOU_VE_REALLY_DONE_IT_THIS_TIME_KUL = 14096 ,
QUEST_HORDE_YOU_VE_REALLY_DONE_IT_THIS_TIME_KUL = 14142 ,
NPC_CAPTIVE_ASPIRANT = 34716 ,
NPC_KUL = 34956
};
bool GOHello_go_black_cage ( Player * pPlayer , GameObject * pGO )
{
Creature * pPrisoner ;
if ((( pPlayer -> GetTeamId () == TEAM_ALLIANCE && pPlayer -> GetQuestStatus ( QUEST_ALLIANCE_YOU_VE_REALLY_DONE_IT_THIS_TIME_KUL ) == QUEST_STATUS_INCOMPLETE ) ||
( pPlayer -> GetTeamId () == TEAM_HORDE && pPlayer -> GetQuestStatus ( QUEST_HORDE_YOU_VE_REALLY_DONE_IT_THIS_TIME_KUL ) == QUEST_STATUS_INCOMPLETE )) &&
(( pPrisoner = pGO -> FindNearestCreature ( NPC_CAPTIVE_ASPIRANT , 1.0f )) || ( pPrisoner = pGO -> FindNearestCreature ( NPC_KUL , 1.0f ))))
{
pGO -> UseDoorOrButton ();
pPrisoner -> DisappearAndDie ();
pPlayer -> KilledMonsterCredit ( pPrisoner -> GetEntry (), 0 );
}
return true ;
}
2008-10-21 13:19:26 -05:00
void AddSC_go_scripts ()
{
Script * newscript ;
2009-10-17 15:51:44 -07:00
2009-03-22 23:11:55 +01:00
newscript = new Script ;
newscript -> Name = "go_cat_figurine" ;
newscript -> pGOHello = & GOHello_go_cat_figurine ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
newscript = new Script ;
2009-10-17 04:23:24 -07:00
newscript -> Name = "go_northern_crystal_pylon" ;
2008-10-21 13:19:26 -05:00
newscript -> pGOHello = & GOHello_go_northern_crystal_pylon ;
2008-11-20 16:16:57 -06:00
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
newscript = new Script ;
2009-10-17 04:23:24 -07:00
newscript -> Name = "go_eastern_crystal_pylon" ;
2008-10-21 13:19:26 -05:00
newscript -> pGOHello = & GOHello_go_eastern_crystal_pylon ;
2008-11-20 16:16:57 -06:00
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
newscript = new Script ;
2009-10-17 04:23:24 -07:00
newscript -> Name = "go_western_crystal_pylon" ;
2008-10-21 13:19:26 -05:00
newscript -> pGOHello = & GOHello_go_western_crystal_pylon ;
2008-11-20 16:16:57 -06:00
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
newscript = new Script ;
2009-10-17 04:23:24 -07:00
newscript -> Name = "go_barov_journal" ;
2008-10-21 13:19:26 -05:00
newscript -> pGOHello = & GOHello_go_barov_journal ;
2008-11-20 16:16:57 -06:00
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
newscript = new Script ;
2009-10-17 04:23:24 -07:00
newscript -> Name = "go_field_repair_bot_74A" ;
2008-10-21 13:19:26 -05:00
newscript -> pGOHello = & GOHello_go_field_repair_bot_74A ;
2008-11-20 16:16:57 -06:00
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-03-22 23:11:55 +01:00
newscript = new Script ;
newscript -> Name = "go_gilded_brazier" ;
newscript -> pGOHello = & GOHello_go_gilded_brazier ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
newscript = new Script ;
2009-10-17 04:23:24 -07:00
newscript -> Name = "go_orb_of_command" ;
2008-10-21 13:19:26 -05:00
newscript -> pGOHello = & GOHello_go_orb_of_command ;
2008-11-20 16:16:57 -06:00
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
newscript = new Script ;
newscript -> Name = "go_shrine_of_the_birds" ;
newscript -> pGOHello = & GOHello_go_shrine_of_the_birds ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-09-19 16:01:08 -07:00
newscript = new Script ;
newscript -> Name = "go_southfury_moonstone" ;
newscript -> pGOHello = & GOHello_go_southfury_moonstone ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
newscript = new Script ;
2009-10-17 04:23:24 -07:00
newscript -> Name = "go_tablet_of_madness" ;
2008-11-15 15:09:22 -06:00
newscript -> pGOHello = & GOHello_go_tablet_of_madness ;
2008-11-20 16:16:57 -06:00
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
newscript = new Script ;
2009-10-17 04:23:24 -07:00
newscript -> Name = "go_tablet_of_the_seven" ;
2008-11-15 15:09:22 -06:00
newscript -> pGOHello = & GOHello_go_tablet_of_the_seven ;
2008-11-20 16:16:57 -06:00
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-03-23 18:07:58 +01:00
newscript = new Script ;
2009-10-17 04:23:24 -07:00
newscript -> Name = "go_jump_a_tron" ;
2009-03-23 18:07:58 +01:00
newscript -> pGOHello = & GOHello_go_jump_a_tron ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-03-24 00:06:47 +01:00
newscript = new Script ;
2009-10-17 04:23:24 -07:00
newscript -> Name = "go_ethereum_prison" ;
2009-03-24 00:06:47 +01:00
newscript -> pGOHello = & GOHello_go_ethereum_prison ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
newscript = new Script ;
newscript -> Name = "go_ethereum_stasis" ;
newscript -> pGOHello = & GOHello_go_ethereum_stasis ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-07-24 22:42:17 +02:00
newscript = new Script ;
newscript -> Name = "go_resonite_cask" ;
newscript -> pGOHello = & GOHello_go_resonite_cask ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-03-27 20:28:17 +01:00
newscript = new Script ;
newscript -> Name = "go_sacred_fire_of_life" ;
newscript -> pGOHello = & GOHello_go_sacred_fire_of_life ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
newscript = new Script ;
newscript -> Name = "go_tele_to_dalaran_crystal" ;
newscript -> pGOHello = & GOHello_go_tele_to_dalaran_crystal ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-05-31 22:49:30 +02:00
newscript = new Script ;
newscript -> Name = "go_tele_to_violet_stand" ;
newscript -> pGOHello = & GOHello_go_tele_to_violet_stand ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-09-19 12:48:17 -07:00
newscript = new Script ;
newscript -> Name = "go_fel_crystalforge" ;
newscript -> pGOHello = & GOHello_go_fel_crystalforge ;
2009-10-01 23:30:55 -07:00
newscript -> pGOSelect = & GOSelect_go_fel_crystalforge ;
2009-09-19 12:48:17 -07:00
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-09-19 12:48:17 -07:00
newscript = new Script ;
newscript -> Name = "go_bashir_crystalforge" ;
newscript -> pGOHello = & GOHello_go_bashir_crystalforge ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-10-13 20:21:50 +02:00
newscript = new Script ;
newscript -> Name = "go_matrix_punchograph" ;
newscript -> pGOHello = & GOHello_go_matrix_punchograph ;
newscript -> RegisterSelf ();
2009-10-24 21:26:37 +02:00
newscript = new Script ;
newscript -> Name = "go_rusty_cage" ;
newscript -> pGOHello = & GOHello_go_rusty_cage ;
newscript -> RegisterSelf ();
2009-10-29 21:37:45 +01:00
newscript = new Script ;
newscript -> Name = "go_scourge_cage" ;
newscript -> pGOHello = & GOHello_go_scourge_cage ;
newscript -> RegisterSelf ();
2009-11-17 16:23:12 -08:00
newscript = new Script ;
newscript -> Name = "go_arcane_prison" ;
newscript -> pGOHello = & GOHello_go_arcane_prison ;
newscript -> RegisterSelf ();
2009-11-21 19:25:29 -08:00
newscript = new Script ;
newscript -> Name = "go_blood_filled_orb" ;
newscript -> pGOHello = & GOHello_go_blood_filled_orb ;
newscript -> RegisterSelf ();
2009-02-17 20:07:49 -06:00
2009-12-20 13:22:25 -03:00
newscript = new Script ;
newscript -> Name = "go_jotunheim_cage" ;
newscript -> pGOHello = & GOHello_go_jotunheim_cage ;
newscript -> RegisterSelf ();
2010-01-04 00:08:00 -03:00
newscript = new Script ;
newscript -> Name = "go_table_theka" ;
newscript -> pGOHello = & GOHello_go_table_theka ;
newscript -> RegisterSelf ();
2010-01-13 00:39:05 -07:00
newscript = new Script ;
newscript -> Name = "go_inconspicuous_landmark" ;
newscript -> pGOHello = & GOHello_go_inconspicuous_landmark ;
newscript -> RegisterSelf ();
2010-02-04 14:43:07 +01:00
newscript = new Script ;
newscript -> Name = "go_soulwell" ;
newscript -> pGOHello = & GOHello_go_soulwell ;
newscript -> RegisterSelf ();
2010-02-18 22:22:09 +01:00
newscript = new Script ;
newscript -> Name = "go_tadpole_cage" ;
newscript -> pGOHello = & GOHello_go_tadpole_cage ;
newscript -> RegisterSelf ();
2010-02-23 20:36:56 +01:00
newscript = new Script ;
newscript -> Name = "go_dragonflayer_cage" ;
newscript -> pGOHello = & GOHello_go_dragonflayer_cage ;
newscript -> RegisterSelf ();
2009-12-20 13:22:25 -03:00
}