mirror of
https://bitbucket.org/seefoe/dsrc.git
synced 2026-07-31 01:15:55 -04:00
597 lines
17 KiB
Plaintext
597 lines
17 KiB
Plaintext
// ======================================================================
|
|
//
|
|
// lifeday04a.script
|
|
//
|
|
//
|
|
//
|
|
// Created with SwgConversationEditor 1.28 - DO NOT EDIT THIS AUTO-GENERATED FILE!
|
|
//
|
|
// ======================================================================
|
|
|
|
// ======================================================================
|
|
// Library Includes
|
|
// ======================================================================
|
|
|
|
include library.ai_lib;
|
|
include library.chat;
|
|
include library.utils;
|
|
|
|
// ======================================================================
|
|
// Script Constants
|
|
// ======================================================================
|
|
|
|
string c_stringFile = "conversation/lifeday04a";
|
|
|
|
// ======================================================================
|
|
// Script Conditions
|
|
// ======================================================================
|
|
|
|
boolean lifeday04a_condition__defaultCondition (obj_id player, obj_id npc)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
boolean lifeday04a_condition_hasBeenRewarded (obj_id player, obj_id npc)
|
|
{
|
|
int convTracker = getIntObjVar(player, "lifeday04.convTracker");
|
|
|
|
if(hasObjVar(player, "lifeday04.rewarded") || convTracker == 15)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
boolean lifeday04a_condition_hasSpokenOnce (obj_id player, obj_id npc)
|
|
{
|
|
if(hasObjVar(player, "lifeday04.convTracker"))
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
boolean lifeday04a_condition_isaWookiee (obj_id player, obj_id npc)
|
|
{
|
|
int species = getSpecies(player);
|
|
|
|
if(species == SPECIES_WOOKIEE)
|
|
return true;
|
|
else
|
|
return false;
|
|
|
|
}
|
|
|
|
// ======================================================================
|
|
// Script Actions
|
|
// ======================================================================
|
|
|
|
void lifeday04a_action_giveWaypoint (obj_id player, obj_id npc)
|
|
{
|
|
int[] coordinates = { -2579, 0, -5520, //Dathomir
|
|
-1090, 0, -1000, //Endor
|
|
-5, 0, -3922 //Yavin 4
|
|
};
|
|
|
|
string[] planet = { "dathomir", "endor", "yavin4" };
|
|
|
|
string_id waypointName = new string_id ("quest/lifeday/lifeday", "waypoint_name");
|
|
string_id waypointUpdated = new string_id ("quest/lifeday/lifeday", "waypoint_updated");
|
|
int roll = rand(0, 2);
|
|
|
|
location lifedayLoc = new location(coordinates[(roll*3)], coordinates[(roll*3)+1], coordinates[(roll*3)+2],
|
|
planet[roll]);
|
|
|
|
obj_id waypoint = createWaypointInDatapad(player, lifedayLoc);
|
|
|
|
if (isIdValid(waypoint))
|
|
{
|
|
setWaypointActive(waypoint, true);
|
|
setWaypointName (waypoint, utils.packStringId(waypointName));
|
|
}
|
|
sendSystemMessage(player, waypointUpdated);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void lifeday04a_action_finishedConversation (obj_id player, obj_id npc)
|
|
{
|
|
setObjVar(player, "lifeday04.convTracker", 0);
|
|
|
|
int[] coordinates = { -2579, 0, -5520, //Dathomir
|
|
-1090, 0, -1000, //Endor
|
|
-5, 0, -3922 //Yavin 4
|
|
};
|
|
|
|
string[] planet = { "dathomir", "endor", "yavin4" };
|
|
|
|
string_id waypointName = new string_id ("quest/lifeday/lifeday", "waypoint_name");
|
|
string_id waypointUpdated = new string_id ("quest/lifeday/lifeday", "waypoint_updated");
|
|
int roll = rand(0, 2);
|
|
|
|
location lifedayLoc = new location(coordinates[(roll*3)], coordinates[(roll*3)+1], coordinates[(roll*3)+2],
|
|
planet[roll]);
|
|
|
|
obj_id waypoint = createWaypointInDatapad(player, lifedayLoc);
|
|
|
|
if (isIdValid(waypoint))
|
|
{
|
|
setWaypointActive(waypoint, true);
|
|
setWaypointName (waypoint, utils.packStringId(waypointName));
|
|
}
|
|
sendSystemMessage(player, waypointUpdated);
|
|
}
|
|
|
|
// ======================================================================
|
|
// Script %TO Tokens
|
|
// ======================================================================
|
|
|
|
// ======================================================================
|
|
// Script %DI Tokens
|
|
// ======================================================================
|
|
|
|
// ======================================================================
|
|
// Script %DF Tokens
|
|
// ======================================================================
|
|
|
|
// ======================================================================
|
|
// handleBranch<n> Functions
|
|
// ======================================================================
|
|
|
|
int lifeday04a_handleBranch2 (obj_id player, obj_id npc, string_id response)
|
|
{
|
|
//-- [BRANCH NOTE]
|
|
//-- NPC: (Translated from Shyriiwook) You're back. Were you unable to find the camp?
|
|
|
|
//-- [RESPONSE NOTE]
|
|
//-- PLAYER: Yes. I need directions again.
|
|
if (response == "s_8fa670")
|
|
{
|
|
lifeday04a_action_giveWaypoint (player, npc);
|
|
|
|
//-- [NOTE]
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
doAnimationAction (npc, "shake_head_no");
|
|
|
|
//-- NPC: (Translated from Shyriiwook) I understand. Sometimes we have to move around to escape persecution. You can find the celebration here.
|
|
string_id message = new string_id (c_stringFile, "s_1d62f66a");
|
|
utils.removeScriptVar (player, "conversation.lifeday04a.branchId");
|
|
|
|
chat.chat (npc, player, message);
|
|
npcEndConversation (player);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
}
|
|
|
|
return SCRIPT_DEFAULT;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
int lifeday04a_handleBranch4 (obj_id player, obj_id npc, string_id response)
|
|
{
|
|
//-- [BRANCH NOTE]
|
|
//-- NPC: (Translated from Shyriiwook) Ah! A Wookiee cousin! Are you here to celebrate Life Day?
|
|
|
|
//-- [RESPONSE NOTE]
|
|
//-- PLAYER: Yes I am. Where can I find a Life Day gathering?
|
|
if (response == "s_20e6f0a5")
|
|
{
|
|
lifeday04a_action_finishedConversation (player, npc);
|
|
|
|
//-- [NOTE]
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
doAnimationAction (npc, "nod_head_multiple");
|
|
|
|
//-- NPC: (Translated from Shyriiwook) I will give you a waypoint where some of my family have gathered to celebrate. Go there and they will welcome you with open arms. Happy Life Day to you.
|
|
string_id message = new string_id (c_stringFile, "s_f9bf77a0");
|
|
utils.removeScriptVar (player, "conversation.lifeday04a.branchId");
|
|
|
|
chat.chat (npc, player, message);
|
|
npcEndConversation (player);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
}
|
|
|
|
return SCRIPT_DEFAULT;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
int lifeday04a_handleBranch6 (obj_id player, obj_id npc, string_id response)
|
|
{
|
|
//-- [BRANCH NOTE]
|
|
//-- NPC: (Translated from Shyriiwook) Greetings friend! You are just in time to join our Life Day celebrations.
|
|
|
|
//-- [RESPONSE NOTE]
|
|
//-- PLAYER: Life Day? What's that?
|
|
if (response == "s_643fa34")
|
|
{
|
|
//-- [NOTE]
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
doAnimationAction (npc, "explain");
|
|
|
|
//-- NPC: (Translated from Shyriiwook) Life Day is a traditional celebration on Kashyyyk, the Wookiee homeworld. I would tell you more, but it is best you experience a Life Day ceremony for yourself.
|
|
string_id message = new string_id (c_stringFile, "s_50a0c963");
|
|
int numberOfResponses = 0;
|
|
|
|
boolean hasResponse = false;
|
|
|
|
//-- PLAYER: I would like that. What do I do?
|
|
boolean hasResponse0 = false;
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
++numberOfResponses;
|
|
hasResponse = true;
|
|
hasResponse0 = true;
|
|
}
|
|
|
|
//-- PLAYER: I think I'll pass. Thanks anyway.
|
|
boolean hasResponse1 = false;
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
++numberOfResponses;
|
|
hasResponse = true;
|
|
hasResponse1 = true;
|
|
}
|
|
|
|
if (hasResponse)
|
|
{
|
|
int responseIndex = 0;
|
|
string_id responses [] = new string_id [numberOfResponses];
|
|
|
|
if (hasResponse0)
|
|
responses [responseIndex++] = new string_id (c_stringFile, "s_2a85dd74");
|
|
|
|
if (hasResponse1)
|
|
responses [responseIndex++] = new string_id (c_stringFile, "s_20268f64");
|
|
|
|
utils.setScriptVar (player, "conversation.lifeday04a.branchId", 7);
|
|
|
|
npcSpeak (player, message);
|
|
npcSetConversationResponses (player, responses);
|
|
}
|
|
else
|
|
{
|
|
utils.removeScriptVar (player, "conversation.lifeday04a.branchId");
|
|
|
|
chat.chat (npc, player, message);
|
|
npcEndConversation (player);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
}
|
|
|
|
//-- [RESPONSE NOTE]
|
|
//-- PLAYER: Life Day? No thanks. I've got other things to do.
|
|
if (response == "s_acf458b4")
|
|
{
|
|
//-- [NOTE]
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
doAnimationAction (npc, "cough_polite");
|
|
|
|
//-- NPC: (Translated from Shyriiwook) That is too bad. If you change your mind be sure to find me.
|
|
string_id message = new string_id (c_stringFile, "s_b3f5b52e");
|
|
utils.removeScriptVar (player, "conversation.lifeday04a.branchId");
|
|
|
|
chat.chat (npc, player, message);
|
|
npcEndConversation (player);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
}
|
|
|
|
return SCRIPT_DEFAULT;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
int lifeday04a_handleBranch7 (obj_id player, obj_id npc, string_id response)
|
|
{
|
|
//-- [BRANCH NOTE]
|
|
//-- NPC: (Translated from Shyriiwook) Life Day is a traditional celebration on Kashyyyk, the Wookiee homeworld. I would tell you more, but it is best you experience a Life Day ceremony for yourself.
|
|
|
|
//-- [RESPONSE NOTE]
|
|
//-- PLAYER: I would like that. What do I do?
|
|
if (response == "s_2a85dd74")
|
|
{
|
|
lifeday04a_action_finishedConversation (player, npc);
|
|
|
|
//-- [NOTE]
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
doAnimationAction (npc, "nod_head_once");
|
|
|
|
//-- NPC: (Translated from Shyriiwook) I will give you a waypoint where some of my family have gathered to celebrate. Go there and they will tell you more. Happy Life Day to you.
|
|
string_id message = new string_id (c_stringFile, "s_dbcb339");
|
|
utils.removeScriptVar (player, "conversation.lifeday04a.branchId");
|
|
|
|
chat.chat (npc, player, message);
|
|
npcEndConversation (player);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
}
|
|
|
|
//-- [RESPONSE NOTE]
|
|
//-- PLAYER: I think I'll pass. Thanks anyway.
|
|
if (response == "s_20268f64")
|
|
{
|
|
//-- [NOTE]
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
doAnimationAction (npc, "cough_polite");
|
|
|
|
//-- NPC: (Translated from Shyriiwook) That is too bad. If you change your mind be sure to find me.
|
|
string_id message = new string_id (c_stringFile, "s_b3f5b52e");
|
|
utils.removeScriptVar (player, "conversation.lifeday04a.branchId");
|
|
|
|
chat.chat (npc, player, message);
|
|
npcEndConversation (player);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
}
|
|
|
|
return SCRIPT_DEFAULT;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
// ======================================================================
|
|
// User Script Triggers
|
|
// ======================================================================
|
|
|
|
trigger OnInitialize ()
|
|
{
|
|
if ((!isMob (self)) || (isPlayer (self)))
|
|
detachScript(self, "conversation.lifeday04a");
|
|
|
|
setCondition (self, CONDITION_CONVERSABLE);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnAttach ()
|
|
{
|
|
setCondition (self, CONDITION_CONVERSABLE);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnObjectMenuRequest (obj_id player, menu_info menuInfo)
|
|
{
|
|
int menu = menuInfo.addRootMenu (menu_info_types.CONVERSE_START, null);
|
|
menu_info_data menuInfoData = menuInfo.getMenuItemById (menu);
|
|
menuInfoData.setServerNotify (false);
|
|
setCondition (self, CONDITION_CONVERSABLE);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnIncapacitated (obj_id killer)
|
|
{
|
|
clearCondition (self, CONDITION_CONVERSABLE);
|
|
detachScript (self, "conversation.lifeday04a");
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
// ======================================================================
|
|
// Script Triggers
|
|
// ======================================================================
|
|
|
|
//-- This function should move to base_class.java
|
|
boolean npcStartConversation(obj_id player, obj_id npc, string convoName, string_id greetingId, prose_package greetingProse, string_id[] responses)
|
|
{
|
|
Object[] objects = new Object[responses.length];
|
|
System.arraycopy(responses, 0, objects, 0, responses.length);
|
|
return npcStartConversation(player, npc, convoName, greetingId, greetingProse, objects);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
trigger OnStartNpcConversation (obj_id player)
|
|
{
|
|
obj_id npc = self;
|
|
|
|
if (ai_lib.isInCombat (npc) || ai_lib.isInCombat (player))
|
|
return SCRIPT_OVERRIDE;
|
|
|
|
//-- [NOTE]
|
|
if (lifeday04a_condition_hasBeenRewarded (player, npc))
|
|
{
|
|
//-- NPC: (Translated from Shyriiwook) You're back! I'm glad you were able to take part in our traditions. Be sure to spread the harmony of Life Day to all the beings you meet today.
|
|
string_id message = new string_id (c_stringFile, "s_5c9098df");
|
|
chat.chat (npc, player, message);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//-- [NOTE]
|
|
if (lifeday04a_condition_hasSpokenOnce (player, npc))
|
|
{
|
|
doAnimationAction (npc, "rub_chin_thoughtful");
|
|
|
|
//-- NPC: (Translated from Shyriiwook) You're back. Were you unable to find the camp?
|
|
string_id message = new string_id (c_stringFile, "s_da120aad");
|
|
int numberOfResponses = 0;
|
|
|
|
boolean hasResponse = false;
|
|
|
|
//-- PLAYER: Yes. I need directions again.
|
|
boolean hasResponse0 = false;
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
++numberOfResponses;
|
|
hasResponse = true;
|
|
hasResponse0 = true;
|
|
}
|
|
|
|
if (hasResponse)
|
|
{
|
|
int responseIndex = 0;
|
|
string_id responses [] = new string_id [numberOfResponses];
|
|
|
|
if (hasResponse0)
|
|
responses [responseIndex++] = new string_id (c_stringFile, "s_8fa670");
|
|
|
|
utils.setScriptVar (player, "conversation.lifeday04a.branchId", 2);
|
|
|
|
npcStartConversation (player, npc, "lifeday04a", message, responses);
|
|
}
|
|
else
|
|
{
|
|
chat.chat (npc, player, message);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//-- [NOTE]
|
|
if (lifeday04a_condition_isaWookiee (player, npc))
|
|
{
|
|
doAnimationAction (npc, "offer_affection");
|
|
|
|
//-- NPC: (Translated from Shyriiwook) Ah! A Wookiee cousin! Are you here to celebrate Life Day?
|
|
string_id message = new string_id (c_stringFile, "s_311837be");
|
|
int numberOfResponses = 0;
|
|
|
|
boolean hasResponse = false;
|
|
|
|
//-- PLAYER: Yes I am. Where can I find a Life Day gathering?
|
|
boolean hasResponse0 = false;
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
++numberOfResponses;
|
|
hasResponse = true;
|
|
hasResponse0 = true;
|
|
}
|
|
|
|
if (hasResponse)
|
|
{
|
|
int responseIndex = 0;
|
|
string_id responses [] = new string_id [numberOfResponses];
|
|
|
|
if (hasResponse0)
|
|
responses [responseIndex++] = new string_id (c_stringFile, "s_20e6f0a5");
|
|
|
|
utils.setScriptVar (player, "conversation.lifeday04a.branchId", 4);
|
|
|
|
npcStartConversation (player, npc, "lifeday04a", message, responses);
|
|
}
|
|
else
|
|
{
|
|
chat.chat (npc, player, message);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//-- [NOTE]
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
doAnimationAction (npc, "greet");
|
|
|
|
//-- NPC: (Translated from Shyriiwook) Greetings friend! You are just in time to join our Life Day celebrations.
|
|
string_id message = new string_id (c_stringFile, "s_ada83d27");
|
|
int numberOfResponses = 0;
|
|
|
|
boolean hasResponse = false;
|
|
|
|
//-- PLAYER: Life Day? What's that?
|
|
boolean hasResponse0 = false;
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
++numberOfResponses;
|
|
hasResponse = true;
|
|
hasResponse0 = true;
|
|
}
|
|
|
|
//-- PLAYER: Life Day? No thanks. I've got other things to do.
|
|
boolean hasResponse1 = false;
|
|
if (lifeday04a_condition__defaultCondition (player, npc))
|
|
{
|
|
++numberOfResponses;
|
|
hasResponse = true;
|
|
hasResponse1 = true;
|
|
}
|
|
|
|
if (hasResponse)
|
|
{
|
|
int responseIndex = 0;
|
|
string_id responses [] = new string_id [numberOfResponses];
|
|
|
|
if (hasResponse0)
|
|
responses [responseIndex++] = new string_id (c_stringFile, "s_643fa34");
|
|
|
|
if (hasResponse1)
|
|
responses [responseIndex++] = new string_id (c_stringFile, "s_acf458b4");
|
|
|
|
utils.setScriptVar (player, "conversation.lifeday04a.branchId", 6);
|
|
|
|
npcStartConversation (player, npc, "lifeday04a", message, responses);
|
|
}
|
|
else
|
|
{
|
|
chat.chat (npc, player, message);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
chat.chat (npc, "Error: All conditions for OnStartNpcConversation were false.");
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
trigger OnNpcConversationResponse (string conversationId, obj_id player, string_id response)
|
|
{
|
|
if (conversationId != "lifeday04a")
|
|
return SCRIPT_CONTINUE;
|
|
|
|
obj_id npc = self;
|
|
|
|
int branchId = utils.getIntScriptVar (player, "conversation.lifeday04a.branchId");
|
|
|
|
if (branchId == 2 && lifeday04a_handleBranch2 (player, npc, response) == SCRIPT_CONTINUE)
|
|
return SCRIPT_CONTINUE;
|
|
|
|
if (branchId == 4 && lifeday04a_handleBranch4 (player, npc, response) == SCRIPT_CONTINUE)
|
|
return SCRIPT_CONTINUE;
|
|
|
|
if (branchId == 6 && lifeday04a_handleBranch6 (player, npc, response) == SCRIPT_CONTINUE)
|
|
return SCRIPT_CONTINUE;
|
|
|
|
if (branchId == 7 && lifeday04a_handleBranch7 (player, npc, response) == SCRIPT_CONTINUE)
|
|
return SCRIPT_CONTINUE;
|
|
|
|
chat.chat (npc, "Error: Fell through all branches and responses for OnNpcConversationResponse.");
|
|
|
|
utils.removeScriptVar (player, "conversation.lifeday04a.branchId");
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
// ======================================================================
|
|
|