mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-07-31 00:15:54 -04:00
242 lines
6.5 KiB
Plaintext
242 lines
6.5 KiB
Plaintext
include library.quests;
|
|
include library.ai_lib;
|
|
include library.chat;
|
|
include library.utils;
|
|
include ai.ai_combat;
|
|
include library.money;
|
|
include library.create;
|
|
|
|
trigger OnAttach()
|
|
{
|
|
messageTo (self, "setupSelf", null, 4, true);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnStartNpcConversation (obj_id speaker)
|
|
{
|
|
string datatable = getStringObjVar (self, "quest_table");
|
|
int questNum = getIntObjVar (self, "questNum");
|
|
string CONVO = dataTableGetString (datatable, 1, questNum);
|
|
string questID = dataTableGetString (datatable, 3, questNum);
|
|
string type = dataTableGetString (datatable, 0, questNum);
|
|
|
|
if (ai_lib.isInCombat(self) || ai_lib.isInCombat(speaker))
|
|
return SCRIPT_OVERRIDE;
|
|
|
|
if (hasObjVar (speaker, questID + ".vip"))
|
|
{
|
|
|
|
obj_id courier = getObjIdObjVar (speaker, questID + ".vip");
|
|
if (courier == self)
|
|
{
|
|
if (type == "rescue")
|
|
{
|
|
string reward = "npc_takeme_" + questNum;
|
|
string_id message = new string_id (CONVO, reward);
|
|
chat.chat (self, message);
|
|
dictionary parms = new dictionary();
|
|
parms.put ("player", speaker);
|
|
messageTo (self, "followPlayer", parms, 0, true);
|
|
messageTo (speaker, "finishQuest", null, 0, true);
|
|
messageTo (self, "spawnExtras", null, 0, true);
|
|
return SCRIPT_OVERRIDE;
|
|
}
|
|
else if (type == "smuggle")
|
|
{
|
|
obj_id playerInv = utils.getInventoryContainer(speaker);
|
|
if (checkForItem(playerInv, speaker, questNum) == true)
|
|
{
|
|
string reward = "npc_smuggle_" + questNum;
|
|
string_id message = new string_id (CONVO, reward);
|
|
chat.chat (self, message);
|
|
dictionary parms = new dictionary();
|
|
parms.put ("player", speaker);
|
|
messageTo (self, "giveReward", parms, 0, true);
|
|
return SCRIPT_OVERRIDE;
|
|
}
|
|
else
|
|
{
|
|
string_id work = new string_id(CONVO, "gotowork");
|
|
chat.chat (self, work);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
}
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
else
|
|
{
|
|
string_id work = new string_id(CONVO, "otherescort");
|
|
chat.chat (self, work);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string_id blah = new string_id (CONVO, "dontknowyou");
|
|
chat.chat (self, blah);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
}
|
|
|
|
trigger OnIncapacitated (obj_id killer)
|
|
{
|
|
string datatable = getStringObjVar (self, "quest_table");
|
|
obj_id player = getObjIdObjVar (self, "player");
|
|
int questNum = getIntObjVar (self, "questNum");
|
|
string type = dataTableGetString (datatable, 0, questNum);
|
|
|
|
if (type == "destroy")
|
|
{
|
|
messageTo (player, "finishQuest", null, 0, true);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
else if (type == "fetch")
|
|
{
|
|
string reward = dataTableGetString (datatable, 4, questNum);
|
|
obj_id playerInv = utils.getInventoryContainer(player);
|
|
createObject (reward, playerInv, "");
|
|
messageTo (player, "finishQuest", null, 0, true);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler followPlayer()
|
|
{
|
|
obj_id player = params.getObjId ("player");
|
|
ai_lib.aiFollow(self, player);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler stopFollowing()
|
|
{
|
|
string datatable = getStringObjVar (self, "quest_table");
|
|
datatable = "datatables/theme_park/" + datatable + ".iff";
|
|
int questNum = getIntObjVar (self, "questNum");
|
|
string questID = dataTableGetString (datatable, 3, questNum);
|
|
string playerScript = dataTableGetString (datatable, 6, questNum);
|
|
|
|
debugSpeakMsg (self, "Thanks for bringing me back.");
|
|
obj_id player = params.getObjId ("player");
|
|
ai_lib.aiStopFollowing (self);
|
|
detachScript (player, playerScript);
|
|
setObjVar (player, questID + ".done", 1);
|
|
messageTo (self, "cleanUp", null, 60, true);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
|
|
messageHandler setupSelf ()
|
|
{
|
|
string datatable = getStringObjVar (self, "quest_table");
|
|
if (datatable == null)
|
|
{
|
|
setObjVar (self, "NO SCRIPT", 1);
|
|
return SCRIPT_OVERRIDE;
|
|
}
|
|
int questNum = getIntObjVar (self, "questNum");
|
|
string type = dataTableGetString (datatable, 0, questNum);
|
|
ai_lib.setDefaultCalmBehavior( self, ai_lib.BEHAVIOR_SENTINEL );
|
|
|
|
if (type == "rescue" || type == "smuggle")
|
|
{
|
|
attachScript (self, "npc.converse.npc_converse_menu");
|
|
}
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler saySomething()
|
|
{
|
|
string datatable = getStringObjVar (self, "quest_table");
|
|
obj_id player = getObjIdObjVar (self, "player");
|
|
int questNum = getIntObjVar (self, "questNum");
|
|
string type = dataTableGetString (datatable, 0, questNum);
|
|
string CONVO = dataTableGetString (datatable, 1, questNum);
|
|
|
|
string something = "npc_breech_" + questNum;
|
|
string_id message = new string_id (CONVO, something);
|
|
chat.chat (self, message);
|
|
|
|
if (type == "destroy" || type == "fetch")
|
|
{
|
|
startCombat(self, player);
|
|
}
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler giveReward()
|
|
{
|
|
obj_id player = params.getObjId ("player");
|
|
string datatable = getStringObjVar (player, "quest_table");
|
|
int questNum = getIntObjVar (self, "quest");
|
|
string playerScript = dataTableGetString (datatable, 6, questNum);
|
|
string questID = dataTableGetString (datatable, 3, questNum);
|
|
string reward = dataTableGetString (datatable, 4, questNum);
|
|
|
|
if (reward == "credits")
|
|
{
|
|
money.bankTo(money.ACCT_JABBA, player, 100);
|
|
}
|
|
else
|
|
{
|
|
obj_id playerInv = utils.getInventoryContainer(player);
|
|
createObject (reward, playerInv, "");
|
|
}
|
|
setObjVar (player, questID + ".done", 1);
|
|
messageTo (player, "finishQuest", null, 0, true);
|
|
detachScript (player, playerScript);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
boolean checkForItem (obj_id inv, obj_id player, int questNum)
|
|
{
|
|
string datatable = getStringObjVar (player, "quest_table");
|
|
string giveMe = dataTableGetString (datatable, 5, questNum);
|
|
boolean hadIt = false;
|
|
|
|
obj_id[] contents = getContents(inv);
|
|
for ( int i = 0; i < contents.length; i++ )
|
|
{
|
|
string itemInInventory = getTemplateName (contents[i]);
|
|
if (itemInInventory == giveMe)
|
|
{
|
|
destroyObject (contents[i]);
|
|
hadIt = true;
|
|
}
|
|
}
|
|
return hadIt;
|
|
}
|
|
|
|
messageHandler spawnExtras()
|
|
{
|
|
string datatable = getStringObjVar (self, "quest_table");
|
|
int questNum = getIntObjVar (self, "quest");
|
|
location here = getLocation (self);
|
|
obj_id player = getObjIdObjVar (self, "player");
|
|
string columnName = dataTableGetColumnName (datatable, questNum);
|
|
string[] rows = dataTableGetStringColumnNoDefaults (datatable, columnName);
|
|
int numRows = rows.length;
|
|
|
|
if (numRows > 9)
|
|
{
|
|
int x = 10;
|
|
while (x <= numRows)
|
|
{
|
|
string spawn = dataTableGetString (datatable, x, questNum);
|
|
int around = rand (5, 20);
|
|
here.x = here.x + around;
|
|
here.z = here.z + around;
|
|
|
|
obj_id enemy = create.object (spawn, here);
|
|
startCombat(enemy, player);
|
|
x = x + 1;
|
|
}
|
|
}
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler cleanUp()
|
|
{
|
|
destroyObject (self);
|
|
return SCRIPT_CONTINUE;
|
|
} |