Files
dsrc/sku.0/sys.server/compiled/game/script/theme_park/quest_player.script
T
2013-09-10 23:17:15 -07:00

113 lines
3.5 KiB
Plaintext

include library.locations;
include library.quests;
include library.create;
trigger OnAttach ()
{
string datatable = getStringObjVar (self, "quest_table");
string gatingString = dataTableGetString (datatable, 2, 1);
string questID = dataTableGetString (datatable, 3, 1);
int questNum = getIntObjVar (self, questID + ".questNum");
string target = dataTableGetString (datatable, 8, questNum);
int totalQuestNum = getIntObjVar (self, gatingString);
string file = "theme_park_jabba/quest_details";
string entry = questID + "_" + totalQuestNum;
location questLoc = getLocationObjVar (self, questID + ".questLoc");
quests.addThemeParkWaypoint( self, null, "quest", questLoc, 15, target, file, entry );
addLocationTarget ("spawnGuy", questLoc, 100);
return SCRIPT_CONTINUE;
}
trigger OnArrivedAtLocation( string name )
{
string datatable = getStringObjVar (self, "quest_table");
string gatingString = dataTableGetString (datatable, 2, 1);
int gating = getIntObjVar (self, gatingString);
string questID = dataTableGetString (datatable, 3, 1);
int questNum = getIntObjVar (self, questID + ".questNum");
if (name == "quest")
{
quests.clearQuestLocationTarget (self, null, name);
obj_id vip = getObjIdObjVar (self, questID + ".vip");
messageTo (vip, "saySomething", null, 0, true);
}
if (name == "spawnGuy")
{
removeLocationTarget(name);
location spawn = getLocationObjVar (self, questID + ".questLoc");
string npcToSpawn = dataTableGetString (datatable, 7, questNum);
if (npcToSpawn == null)
{
debugSpeakMsg (self, "Can't find anyone to spawn");
return SCRIPT_CONTINUE;
}
string npcName = dataTableGetString (datatable, 8, questNum);
string npcScript = dataTableGetString (datatable, 9, questNum);
obj_id npc = create.object (npcToSpawn, spawn);
attachScript (npc, npcScript);
setObjVar (npc, "player", self);
setObjVar (self, questID + ".vip", npc);
setObjVar (npc, "quest_table", datatable);
setObjVar (npc, "questNum", questNum);
attachScript (npc, npcScript);
if (npcName != null)
{
setName (npc, npcName);
}
spawnExtras(self, spawn);
}
if (name == "home")
{
quests.clearQuestLocationTarget (self, null, name);
}
return SCRIPT_CONTINUE;
}
messageHandler finishQuest()
{
string datatable = getStringObjVar (self, "quest_table");
string gatingString = dataTableGetString (datatable, 2, 1);
int gating = getIntObjVar (self, gatingString);
string questID = dataTableGetString (datatable, 3, 1);
int questNum = getIntObjVar (self, questID + ".questNum");
location home = getLocationObjVar (self, questID + ".home");
string file = "theme_park_jabba/quest_details";
string entry = questID + "_return";
setObjVar (self, questID + ".done", 1);
quests.addThemeParkWaypoint( self, null, "home", home, 190, questID, file, entry );
return SCRIPT_CONTINUE;
}
void spawnExtras(obj_id self, location spawn)
{
string datatable = getStringObjVar (self, "quest_table");
string gatingString = dataTableGetString (datatable, 2, 1);
string questID = dataTableGetString (datatable, 3, 1);
int questNum = getIntObjVar (self, questID + ".questNum");
string[] max = dataTableGetStringColumnNoDefaults (datatable, questNum);
int maxTotal = max.length;
int x = 10;
while (x <= maxTotal)
{
string extra = dataTableGetString (datatable, x, questNum);
spawn.x = spawn.x + rand(1f,3f);
spawn.z = spawn.z + rand(1f,3f);
obj_id npc = create.object (extra, spawn);
x = x + 1;
}
}
trigger OnIncapacitated (obj_id killer)
{
return SCRIPT_CONTINUE;
}