mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-07-31 00:15:54 -04:00
492 lines
14 KiB
Plaintext
492 lines
14 KiB
Plaintext
// ======================================================================
|
|
//
|
|
// itp_thrawn_main.script
|
|
//
|
|
//
|
|
//
|
|
// Created with SwgConversationEditor 1.36 - DO NOT EDIT THIS AUTO-GENERATED FILE!
|
|
//
|
|
// ======================================================================
|
|
|
|
// ======================================================================
|
|
// Library Includes
|
|
// ======================================================================
|
|
|
|
include library.ai_lib;
|
|
include library.chat;
|
|
include library.factions;
|
|
include library.groundquests;
|
|
include library.space_quest;
|
|
include library.utils;
|
|
|
|
// ======================================================================
|
|
// Script Constants
|
|
// ======================================================================
|
|
|
|
string c_stringFile = "conversation/itp_thrawn_main";
|
|
|
|
// ======================================================================
|
|
// Script Conditions
|
|
// ======================================================================
|
|
|
|
boolean itp_thrawn_main_condition__defaultCondition (obj_id player, obj_id npc)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
boolean itp_thrawn_main_condition_itp_thrawn_01_active (obj_id player, obj_id npc)
|
|
{
|
|
return groundquests.isQuestActive(player, "itp_thrawn_01");
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
boolean itp_thrawn_main_condition_itp_thrawn_01_complete (obj_id player, obj_id npc)
|
|
{
|
|
return groundquests.isTaskActive(player, "itp_thrawn_01", "itp_thrawn_01_03") ||
|
|
groundquests.hasCompletedQuest(player, "itp_thrawn_01");
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
boolean itp_thrawn_main_condition_itp_thrawn_02_active (obj_id player, obj_id npc)
|
|
{
|
|
return groundquests.isQuestActive(player, "itp_thrawn_02");
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
boolean itp_thrawn_main_condition_itp_thrawn_02_complete (obj_id player, obj_id npc)
|
|
{
|
|
return groundquests.isTaskActive(player, "itp_thrawn_02", "itp_thrawn_02_04") ||
|
|
groundquests.hasCompletedQuest(player, "itp_thrawn_02");
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
boolean itp_thrawn_main_condition_completedHethrir (obj_id player, obj_id npc)
|
|
{
|
|
return groundquests.hasCompletedQuest(player, "itp_hethrir_01");
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
boolean itp_thrawn_main_condition_notImperial (obj_id player, obj_id npc)
|
|
{
|
|
string playerFaction = factions.getFaction(player);
|
|
if ( playerFaction == null || !playerFaction.equals("Imperial") )
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
boolean itp_thrawn_main_condition_imperial_isOnLeave (obj_id player, obj_id npc)
|
|
{
|
|
return factions.isOnLeave(player);
|
|
}
|
|
|
|
// ======================================================================
|
|
// Script Actions
|
|
// ======================================================================
|
|
|
|
void itp_thrawn_main_action_itp_thrawn_01_granted (obj_id player, obj_id npc)
|
|
{
|
|
groundquests.grantQuest(player, "itp_thrawn_01");
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void itp_thrawn_main_action_itp_thrawn_01_signal (obj_id player, obj_id npc)
|
|
{
|
|
groundquests.sendSignal(player, "itp_thrawn_01_03");
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void itp_thrawn_main_action_itp_thrawn_02_signal (obj_id player, obj_id npc)
|
|
{
|
|
groundquests.sendSignal(player, "itp_thrawn_02_04");
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void itp_thrawn_main_action_itp_thrawn_02_granted (obj_id player, obj_id npc)
|
|
{
|
|
groundquests.grantQuest(player, "itp_thrawn_02");
|
|
}
|
|
|
|
// ======================================================================
|
|
// Script %TO Tokens
|
|
// ======================================================================
|
|
|
|
// ======================================================================
|
|
// Script %DI Tokens
|
|
// ======================================================================
|
|
|
|
// ======================================================================
|
|
// Script %DF Tokens
|
|
// ======================================================================
|
|
|
|
// ======================================================================
|
|
// handleBranch<n> Functions
|
|
// ======================================================================
|
|
|
|
int itp_thrawn_main_handleBranch6 (obj_id player, obj_id npc, string_id response)
|
|
{
|
|
//-- [BRANCH NOTE]
|
|
//-- NPC: Good, there's no time to lose. An Imperial transport was shot down on Rori. Go investigate the crash site and recover what you can.
|
|
|
|
//-- [RESPONSE NOTE]
|
|
//-- PLAYER: Rori? I'm on my way.
|
|
if (response == "s_22")
|
|
{
|
|
//-- [NOTE]
|
|
if (itp_thrawn_main_condition__defaultCondition (player, npc))
|
|
{
|
|
itp_thrawn_main_action_itp_thrawn_02_granted (player, npc);
|
|
|
|
//-- NPC: Waste no time. Do not let any of the important documents fall into Rebel hands.
|
|
string_id message = new string_id (c_stringFile, "s_25");
|
|
utils.removeScriptVar (player, "conversation.itp_thrawn_main.branchId");
|
|
|
|
npcEndConversationWithMessage (player, message);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
}
|
|
|
|
//-- [RESPONSE NOTE]
|
|
//-- PLAYER: No thank you.
|
|
if (response == "s_26")
|
|
{
|
|
//-- [NOTE]
|
|
if (itp_thrawn_main_condition__defaultCondition (player, npc))
|
|
{
|
|
//-- NPC: Very well.
|
|
string_id message = new string_id (c_stringFile, "s_30");
|
|
utils.removeScriptVar (player, "conversation.itp_thrawn_main.branchId");
|
|
|
|
npcEndConversationWithMessage (player, message);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
}
|
|
|
|
return SCRIPT_DEFAULT;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
int itp_thrawn_main_handleBranch10 (obj_id player, obj_id npc, string_id response)
|
|
{
|
|
//-- [BRANCH NOTE]
|
|
//-- NPC: I've learned of a manufacturing shop where Rebel starships are being repaired. This is a golden opportunity.
|
|
|
|
//-- [RESPONSE NOTE]
|
|
//-- PLAYER: What do you need me to do?
|
|
if (response == "s_36")
|
|
{
|
|
//-- [NOTE]
|
|
if (itp_thrawn_main_condition__defaultCondition (player, npc))
|
|
{
|
|
itp_thrawn_main_action_itp_thrawn_01_granted (player, npc);
|
|
|
|
//-- NPC: If we can find out where the ships are being delivered, we can tag them and track the starships to bigger Rebel bases or even to some of their larger ships.
|
|
string_id message = new string_id (c_stringFile, "s_39");
|
|
utils.removeScriptVar (player, "conversation.itp_thrawn_main.branchId");
|
|
|
|
npcEndConversationWithMessage (player, message);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
}
|
|
|
|
//-- [RESPONSE NOTE]
|
|
//-- PLAYER: No thank you.
|
|
if (response == "s_41")
|
|
{
|
|
//-- [NOTE]
|
|
if (itp_thrawn_main_condition__defaultCondition (player, npc))
|
|
{
|
|
//-- NPC: Very well.
|
|
string_id message = new string_id (c_stringFile, "s_45");
|
|
utils.removeScriptVar (player, "conversation.itp_thrawn_main.branchId");
|
|
|
|
npcEndConversationWithMessage (player, message);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
}
|
|
|
|
return SCRIPT_DEFAULT;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
// ======================================================================
|
|
// User Script Triggers
|
|
// ======================================================================
|
|
|
|
trigger OnInitialize ()
|
|
{
|
|
if ((!isMob (self)) || (isPlayer (self)))
|
|
detachScript(self, "conversation.itp_thrawn_main");
|
|
|
|
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);
|
|
|
|
faceTo( self, player );
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnIncapacitated (obj_id killer)
|
|
{
|
|
clearCondition (self, CONDITION_CONVERSABLE);
|
|
detachScript (self, "conversation.itp_thrawn_main");
|
|
|
|
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 (itp_thrawn_main_condition_notImperial (player, npc))
|
|
{
|
|
//-- NPC: The function of this base is not of your concern. I would suggest you make yourself scarce.
|
|
string_id message = new string_id (c_stringFile, "s_44");
|
|
chat.chat (npc, player, message);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//-- [NOTE]
|
|
if (!itp_thrawn_main_condition_completedHethrir (player, npc))
|
|
{
|
|
//-- NPC: I do not have any orders for you, trooper. I believe Lord Hethrir had sent for you.
|
|
string_id message = new string_id (c_stringFile, "s_46");
|
|
chat.chat (npc, player, message);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//-- [NOTE]
|
|
if (itp_thrawn_main_condition_imperial_isOnLeave (player, npc))
|
|
{
|
|
//-- NPC: I'm afraid I only have orders I have are for those on active duty.
|
|
string_id message = new string_id (c_stringFile, "s_43");
|
|
chat.chat (npc, player, message);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//-- [NOTE]
|
|
if (itp_thrawn_main_condition_itp_thrawn_02_complete (player, npc))
|
|
{
|
|
itp_thrawn_main_action_itp_thrawn_02_signal (player, npc);
|
|
|
|
//-- NPC: Well done. I do not impress easily. I don't expect the Rebels to think twice before shooting down another transport, but I will make sure they pay dearly whenever they do. Colonel Veers feels the same. You should speak with him.
|
|
string_id message = new string_id (c_stringFile, "s_28");
|
|
chat.chat (npc, player, message);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//-- [NOTE]
|
|
if (itp_thrawn_main_condition_itp_thrawn_02_active (player, npc))
|
|
{
|
|
//-- NPC: An Imperial transport was shot down on Rori. Go investigate the crash site and recover what you can.
|
|
string_id message = new string_id (c_stringFile, "s_16");
|
|
chat.chat (npc, player, message);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//-- [NOTE]
|
|
if (itp_thrawn_main_condition_itp_thrawn_01_complete (player, npc))
|
|
{
|
|
itp_thrawn_main_action_itp_thrawn_01_signal (player, npc);
|
|
|
|
//-- NPC: Good, there's no time to lose. An Imperial transport was shot down on Rori. Go investigate the crash site and recover what you can.
|
|
string_id message = new string_id (c_stringFile, "s_20");
|
|
int numberOfResponses = 0;
|
|
|
|
boolean hasResponse = false;
|
|
|
|
//-- PLAYER: Rori? I'm on my way.
|
|
boolean hasResponse0 = false;
|
|
if (itp_thrawn_main_condition__defaultCondition (player, npc))
|
|
{
|
|
++numberOfResponses;
|
|
hasResponse = true;
|
|
hasResponse0 = true;
|
|
}
|
|
|
|
//-- PLAYER: No thank you.
|
|
boolean hasResponse1 = false;
|
|
if (itp_thrawn_main_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_22");
|
|
|
|
if (hasResponse1)
|
|
responses [responseIndex++] = new string_id (c_stringFile, "s_26");
|
|
|
|
utils.setScriptVar (player, "conversation.itp_thrawn_main.branchId", 6);
|
|
|
|
npcStartConversation (player, npc, "itp_thrawn_main", message, responses);
|
|
}
|
|
else
|
|
{
|
|
chat.chat (npc, player, message);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//-- [NOTE]
|
|
if (itp_thrawn_main_condition_itp_thrawn_01_active (player, npc))
|
|
{
|
|
//-- NPC: I've learned of a manufacturing shop where Rebel starships are being repaired. If we can find out where the ships are being delivered, we can tag them and track the starships to bigger Rebel bases or even to some of their larger ships.
|
|
string_id message = new string_id (c_stringFile, "s_32");
|
|
chat.chat (npc, player, message);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//-- [NOTE]
|
|
if (itp_thrawn_main_condition__defaultCondition (player, npc))
|
|
{
|
|
//-- NPC: I've learned of a manufacturing shop where Rebel starships are being repaired. This is a golden opportunity.
|
|
string_id message = new string_id (c_stringFile, "s_34");
|
|
int numberOfResponses = 0;
|
|
|
|
boolean hasResponse = false;
|
|
|
|
//-- PLAYER: What do you need me to do?
|
|
boolean hasResponse0 = false;
|
|
if (itp_thrawn_main_condition__defaultCondition (player, npc))
|
|
{
|
|
++numberOfResponses;
|
|
hasResponse = true;
|
|
hasResponse0 = true;
|
|
}
|
|
|
|
//-- PLAYER: No thank you.
|
|
boolean hasResponse1 = false;
|
|
if (itp_thrawn_main_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_36");
|
|
|
|
if (hasResponse1)
|
|
responses [responseIndex++] = new string_id (c_stringFile, "s_41");
|
|
|
|
utils.setScriptVar (player, "conversation.itp_thrawn_main.branchId", 10);
|
|
|
|
npcStartConversation (player, npc, "itp_thrawn_main", 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 != "itp_thrawn_main")
|
|
return SCRIPT_CONTINUE;
|
|
|
|
obj_id npc = self;
|
|
|
|
int branchId = utils.getIntScriptVar (player, "conversation.itp_thrawn_main.branchId");
|
|
|
|
if (branchId == 6 && itp_thrawn_main_handleBranch6 (player, npc, response) == SCRIPT_CONTINUE)
|
|
return SCRIPT_CONTINUE;
|
|
|
|
if (branchId == 10 && itp_thrawn_main_handleBranch10 (player, npc, response) == SCRIPT_CONTINUE)
|
|
return SCRIPT_CONTINUE;
|
|
|
|
chat.chat (npc, "Error: Fell through all branches and responses for OnNpcConversationResponse.");
|
|
|
|
utils.removeScriptVar (player, "conversation.itp_thrawn_main.branchId");
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
// ======================================================================
|
|
|