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; }