Files
dsrc/sku.0/sys.server/compiled/game/script/terminal/cloning.script
T

229 lines
6.7 KiB
Plaintext

/**
* Copyright (c)2000-2002 Sony Online Entertainment Inc.
* All Rights Reserved
*
* Title: cloning.script
* Description: script for cloning menu options; to be attached to cloning terminals
* @author $Author:$
* @version $Revision:$
*/
/***** INCLUDES ********************************************************/
include library.structure;
include library.utils;
include library.sui;
include library.money;
include library.cloninglib;
include library.prose;
/***** INHERITS ********************************************************/
inherits terminal.base.base_terminal;
/***** CONSTANTS *******************************************************/
const string HANDLER_CLONE_CONFIRM = "handleCloneConfirm";
const string HANDLER_CLONE_COUPON_CONFIRM = "handleCloneCouponConfirm";
const string_id SID_SET_BIND_PT = new string_id ("sui", "mnu_clone");
const string_id SID_CONFIRM_PROMPT = new string_id ("base_player", "clone_confirm_prompt");
const string_id SID_CONFIRM_TITLE = new string_id ("base_player", "clone_confirm_title");
const string_id SID_CONFIRM_COUPON_PROMPT = new string_id ("base_player", "clone_confirm_coupon_prompt");
const string_id SID_CONFIRM_COUPON_TITLE = new string_id ("base_player", "clone_confirm_coupon_title");
const string_id SID_ALREADY_HAVE_CLONE_DATA = new string_id ("base_player", "already_have_clone_data");
const string_id SID_HAVE_COUPON_NOT_AUTH = new string_id ("base_player", "have_coupon_not_auth");
const string_id SID_HAVE_COUPON_NOT_VALID = new string_id ("base_player", "have_coupon_not_valid");
const string CLONING_COUPON = "object/tangible/item/new_player/new_player_cloning_coupon.iff";
/***** TRIGGERS ********************************************************/
trigger OnObjectMenuSelect(obj_id player, int item)
{
if ( item == menu_info_types.ITEM_USE )
{
obj_id bound = getObjIdObjVar(player, cloninglib.VAR_BIND_FACILITY);
if (isIdValid(bound))
{
obj_id topMost = structure.getContainingBuilding(player);
if (!isIdValid(topMost))
{
return SCRIPT_CONTINUE;
}
else
{
if ( topMost == bound )
{
sendSystemMessage(player, SID_ALREADY_HAVE_CLONE_DATA);
return SCRIPT_CONTINUE;
}
}
}
obj_id clone_coupon = utils.getItemPlayerHasByTemplate(player, CLONING_COUPON);
if ( isIdValid(clone_coupon) )
{
if ( hasObjVar(clone_coupon, "owner") )
{
obj_id owner = getObjIdObjVar(clone_coupon, "owner");
if ( isIdValid(owner) )
{
if ( player == owner )
{
utils.setScriptVar(player, cloninglib.SCRVAR_CLONE_COUPON, clone_coupon);
string promptCoupon = utils.packStringId(SID_CONFIRM_COUPON_PROMPT);
string titleCoupon = utils.packStringId(SID_CONFIRM_COUPON_TITLE);
sui.msgbox(self, player, promptCoupon, sui.YES_NO, titleCoupon, HANDLER_CLONE_COUPON_CONFIRM);
return SCRIPT_CONTINUE;
}
else
{
string custLogMsg = "New Player Rewards: %TU tried to use a cloning facility coupon but isn't the owner. Rightful owner is %TT";
CustomerServiceLog("NEW_PLAYER_QUESTS", custLogMsg, player, owner);
if ( isGod(player) )
{
sendSystemMessage(player, SID_HAVE_COUPON_NOT_AUTH);
}
}
}
}
else
{
string custLogMsg = "New Player Rewards: %TU tried to use a cloning facility coupon it is invalid - does not have an owner.";
CustomerServiceLog("NEW_PLAYER_QUESTS", custLogMsg, player);
if ( isGod(player) )
{
sendSystemMessage(player, SID_HAVE_COUPON_NOT_VALID);
}
}
}
if ( !cloninglib.verifyFundsForCloning(player) )
return SCRIPT_CONTINUE;
int cloneCost = cloninglib.getRegisterCloneCost(player);
prose_package pp = prose.getPackage(SID_CONFIRM_PROMPT, cloneCost);
string prompt = "\0"+packOutOfBandProsePackage(null, pp);
string title = utils.packStringId(SID_CONFIRM_TITLE);
int pid = utils.getIntScriptVar(player, "cloningTerminal.pid");
if (pid != 0) forceCloseSUIPage(pid);
pid = sui.msgbox(self, player, prompt, sui.YES_NO, title, HANDLER_CLONE_CONFIRM);
utils.setScriptVar(player, "cloningTerminal.pid", pid);
}
return SCRIPT_CONTINUE;
}
/***** FUNCTIONS *******************************************************/
/***** MESSAGEHANDLERS *************************************************/
messageHandler handleCloneCouponConfirm()
{
obj_id player = sui.getPlayerId(params);
if ( (player == null) || (player == obj_id.NULL_ID) )
{
return SCRIPT_CONTINUE;
}
int btnPressed = sui.getIntButtonPressed(params);
switch(btnPressed)
{
case sui.BP_OK:
queueCommand(player, ##"clone", self, "", COMMAND_PRIORITY_DEFAULT);
break;
case sui.BP_CANCEL:
utils.removeScriptVar(player, cloninglib.SCRVAR_CLONE_COUPON);
if ( !cloninglib.verifyFundsForCloning(player) )
return SCRIPT_CONTINUE;
string prompt = utils.packStringId(SID_CONFIRM_PROMPT);
string title = utils.packStringId(SID_CONFIRM_TITLE);
sui.msgbox(self, player, prompt, sui.YES_NO, title, HANDLER_CLONE_CONFIRM);
break;
}
return SCRIPT_CONTINUE;
}
messageHandler handleCloneConfirm()
{
int btnPressed = sui.getIntButtonPressed(params);
switch(btnPressed)
{
case sui.BP_CANCEL:
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
if ( (player == null) || (player == obj_id.NULL_ID) )
{
return SCRIPT_CONTINUE;
}
queueCommand(player, ##"clone", self, "", COMMAND_PRIORITY_DEFAULT);
return SCRIPT_CONTINUE;
}
/***** BIND/CLONE HANDLERS *************************************************/
messageHandler handleRequestedClone()
{
if ( (params == null) || (params.isEmpty()) )
{
return SCRIPT_CONTINUE;
}
obj_id player = params.getObjId(money.DICT_PLAYER_ID);
if (!isIdValid(player))
{
return SCRIPT_CONTINUE;
}
obj_id facility = structure.getContainingBuilding(player);
if (!isIdValid(facility) || !hasScript(facility, cloninglib.SCRIPT_CLONING_FACILITY))
{
sendSystemMessage(player, cloninglib.SID_BAD_CLONE_LOCATION);
return SCRIPT_CONTINUE;
}
if ( utils.hasScriptVar(player, cloninglib.SCRVAR_CLONE_COUPON) )
{
obj_id clone_coupon = utils.getObjIdScriptVar(player, cloninglib.SCRVAR_CLONE_COUPON);
if ( !isIdValid(clone_coupon) )
{
return SCRIPT_CONTINUE;
}
utils.removeScriptVar(player, cloninglib.SCRVAR_CLONE_COUPON);
destroyObject(clone_coupon);
string custLogMsg = "New Player Rewards: %TU sucessfully used a cloning facility coupon.";
CustomerServiceLog("NEW_PLAYER_QUESTS", custLogMsg, player);
cloninglib.setBind(player, facility);
return SCRIPT_CONTINUE;
}
int retVal = money.getReturnCode(params);
int total = params.getInt(money.DICT_TOTAL);
if ( retVal == money.RET_SUCCESS )
{
if (money.bankTo(self, money.ACCT_CLONING, total))
{
cloninglib.setBind(player, facility);
}
}
return SCRIPT_CONTINUE;
}