mirror of
https://bitbucket.org/seefoe/dsrc.git
synced 2026-07-31 01:15:55 -04:00
407 lines
11 KiB
Plaintext
407 lines
11 KiB
Plaintext
/**
|
|
* Copyright (c)2000-2002 Sony Online Entertainment Inc.
|
|
* All Rights Reserved
|
|
*
|
|
* Title: magic_eight_ball.script
|
|
* DesCRiption: when examined displays a special message randomly picked
|
|
* from 50 predefined messages
|
|
* @author $AutHor: Matthew Kwid$
|
|
* @version $Revision:$
|
|
*/
|
|
|
|
/***** INCLUDES ********************************************************/
|
|
|
|
include library.sui;
|
|
include library.utils;
|
|
include library.prose;
|
|
include library.marriage;
|
|
include library.static_item;
|
|
|
|
/***** INCLUDES ********************************************************/
|
|
|
|
/***** CONSTANTS *******************************************************/
|
|
|
|
const string_id SID_SUI_PROPOSE_PROMPT = new string_id("unity", "sui_propose_prompt");
|
|
const string_id SID_SUI_RING_SPEC = new string_id("unity", "sui_ring_spec");
|
|
const string_id SID_SUI_RING_EQUIP = new string_id("unity", "sui_ring_equip");
|
|
|
|
/***** TRIGGERS ********************************************************/
|
|
trigger OnAttach()
|
|
{
|
|
messageTo(self, marriage.HANDLER_PROPOSAL_EXPIRE, null, marriage.PROPOSAL_TIME, true);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnDetach()
|
|
{
|
|
if ( utils.hasScriptVar(self, marriage.VAR_PROPOSAL_TARGET) )
|
|
{
|
|
if ( getPosture(self) == POSTURE_CROUCHED )
|
|
queueCommand(self, ##"stand", null, "", COMMAND_PRIORITY_DEFAULT);
|
|
|
|
marriage.cleanupProposal(self);
|
|
}
|
|
|
|
if ( utils.hasScriptVar(self, marriage.VAR_PROPOSEDTO_TARGET) )
|
|
{
|
|
marriage.cleanupProposedTo(self);
|
|
marriage.cleanupAcceptance(self);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnLogout()
|
|
{
|
|
obj_id target = null;
|
|
if ( utils.hasScriptVar(self, marriage.VAR_PROPOSAL_TARGET) )
|
|
{
|
|
target = utils.getObjIdScriptVar(self, marriage.VAR_PROPOSAL_TARGET);
|
|
}
|
|
|
|
if ( utils.hasScriptVar(self, marriage.VAR_PROPOSEDTO_TARGET) )
|
|
{
|
|
target = utils.getObjIdScriptVar(self, marriage.VAR_PROPOSEDTO_TARGET);
|
|
}
|
|
|
|
if ( isIdValid(target) )
|
|
messageTo(target, marriage.HANDLER_PROPOSAL_EXPIRE, null, 0, true);
|
|
|
|
messageTo(self, marriage.HANDLER_PROPOSAL_EXPIRE, null, 0, true);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
/***** MESSAGEHANDLERS *************************************************/
|
|
messageHandler handleProposedTo()
|
|
{
|
|
if ( params == null || params.isEmpty() )
|
|
{
|
|
detachScript(self, marriage.SCRIPT_UNITY);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
obj_id proposer = params.getObjId("proposer");
|
|
if ( !isIdValid(proposer) )
|
|
{
|
|
detachScript(self, marriage.SCRIPT_UNITY);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
string proposerName = params.getString("proposerName");
|
|
if ( proposerName == null || proposerName.equals("") )
|
|
{
|
|
detachScript(self, marriage.SCRIPT_UNITY);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
|
|
utils.setScriptVar(self, marriage.VAR_PROPOSEDTO_TARGET, proposer);
|
|
utils.setScriptVar(self, marriage.VAR_PROPOSEDTO_NAME, proposerName);
|
|
|
|
prose_package ppPropose = prose.getPackage(SID_SUI_PROPOSE_PROMPT);
|
|
prose.setTT(ppPropose, proposerName);
|
|
string prompt = " \0" + packOutOfBandProsePackage(null, ppPropose);
|
|
string title = "@" + marriage.STF + ":accept_title";
|
|
int pid = sui.msgbox(self, self, prompt, sui.YES_NO, title, "handleProposalSui");
|
|
if ( pid > -1 )
|
|
{
|
|
utils.setScriptVar(self, marriage.VAR_ACCEPT_SUI, pid);
|
|
}
|
|
else
|
|
{
|
|
detachScript(self, marriage.SCRIPT_UNITY);
|
|
detachScript(proposer, marriage.SCRIPT_UNITY);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleProposalSui()
|
|
{
|
|
if ( params == null || params.isEmpty() )
|
|
{
|
|
marriage.declineProposal(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
int bp = sui.getIntButtonPressed(params);
|
|
if ( bp == sui.BP_CANCEL )
|
|
{
|
|
marriage.declineProposal(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
obj_id[] rings = marriage.getRings(self);
|
|
if ( rings == null || rings.length == 0 )
|
|
{
|
|
marriage.cannotAccept(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//query for ring to offer
|
|
resizeable string[] entries = new string[0];
|
|
for ( int i = 0; i < rings.length; i++ )
|
|
{
|
|
string entry = null;
|
|
|
|
if(static_item.isStaticItem(rings[i]))
|
|
if (!static_item.canEquip(self, rings[i]))
|
|
continue;
|
|
|
|
prose_package ppSpec = prose.getPackage(SID_SUI_RING_EQUIP);
|
|
prose.setTT(ppSpec, getNameStringId(rings[i]));
|
|
entry = " \0" + packOutOfBandProsePackage(null, ppSpec);
|
|
|
|
entries = utils.addElement(entries, entry);
|
|
}
|
|
|
|
string prompt = "@" + marriage.STF + ":ring_prompt";
|
|
string title = "@" + marriage.STF + ":ring_title";
|
|
int pid = sui.listbox(self, self, prompt, sui.OK_CANCEL, title, entries, "handleRingSelectionSui");
|
|
if ( pid > -1 )
|
|
{
|
|
utils.setScriptVar(self, marriage.VAR_ACCEPT_SUI, pid);
|
|
utils.setBatchScriptVar(self, marriage.VAR_ACCEPT_SUI_OPTIONS, rings);
|
|
}
|
|
else
|
|
{
|
|
obj_id proposer = utils.getObjIdScriptVar(self, marriage.VAR_PROPOSEDTO_TARGET);
|
|
if ( isIdValid(proposer) )
|
|
messageTo(proposer, marriage.HANDLER_PROPOSAL_EXPIRE, null, 0, true);
|
|
|
|
messageTo(self, marriage.HANDLER_PROPOSAL_EXPIRE, null, 0, true);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleRingSelectionSui()
|
|
{
|
|
if ( params == null || params.isEmpty() )
|
|
{
|
|
marriage.declineProposal(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
int bp = sui.getIntButtonPressed(params);
|
|
if ( bp == sui.BP_CANCEL )
|
|
{
|
|
marriage.declineProposal(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
int idx = sui.getListboxSelectedRow(params);
|
|
if ( idx == -1 )
|
|
{
|
|
marriage.declineProposal(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
obj_id[] rings = marriage.getRings(self);
|
|
if ( rings == null || rings.length == 0 )
|
|
{
|
|
marriage.cannotAccept(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
obj_id[] ringOptions = utils.getObjIdBatchScriptVar(self, marriage.VAR_ACCEPT_SUI_OPTIONS);
|
|
if ( ringOptions == null || ringOptions.length == 0 )
|
|
{
|
|
marriage.cannotAccept(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
if ( idx >= ringOptions.length )
|
|
{
|
|
marriage.cannotAccept(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
obj_id retRing = ringOptions[idx];
|
|
if ( utils.getElementPositionInArray(rings, retRing) == -1 )
|
|
{
|
|
marriage.cannotAccept(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
obj_id proposer = utils.getObjIdScriptVar(self, marriage.VAR_PROPOSEDTO_TARGET);
|
|
if ( !isIdValid(proposer) )
|
|
messageTo(self, marriage.HANDLER_PROPOSAL_EXPIRE, null, 0, true);
|
|
|
|
//message to proposer with acceptance
|
|
marriage.cleanupAcceptance(self);
|
|
|
|
utils.setScriptVar(self, marriage.VAR_ACCEPT_RING, retRing);
|
|
|
|
////debugSpeakMsg(self, "Attempting to wed...");
|
|
marriage.wed(proposer, self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
|
|
/*messageHandler handleProposalAccepted()
|
|
{
|
|
if ( params == null || params.isEmpty() )
|
|
{
|
|
obj_id target = utils.getObjIdScriptVar(self, marriage.VAR_PROPOSAL_TARGET);
|
|
if ( isIdValid(target) )
|
|
{
|
|
messageTo(target, marriage.HANDLER_PROPOSAL_EXPIRE, null, 0, true);
|
|
}
|
|
|
|
messageTo(self, marriage.HANDLER_PROPOSAL_EXPIRE, null, 0, true);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
obj_id target = params.getObjId("target");
|
|
if ( isIdValid(target) )
|
|
marriage.wed(self, target);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}*/
|
|
|
|
messageHandler handleProposalExpire()
|
|
{
|
|
if ( utils.hasScriptVar(self, marriage.VAR_PROPOSAL_TARGET) )
|
|
{
|
|
string proposee = utils.getStringScriptVar(self, marriage.VAR_PROPOSAL_NAME);
|
|
if ( proposee != null && !proposee.equals("") )
|
|
{
|
|
//sendSystemMessageTestingOnly(self, "Your unity proposal to " + proposee + " has expired.");
|
|
prose_package ppExpirePlayer = prose.getPackage(marriage.PROSE_EXPIRE_PLAYER, proposee);
|
|
sendSystemMessageProse(self, ppExpirePlayer);
|
|
}
|
|
else
|
|
{
|
|
//sendSystemMessageTestingOnly(self, "Your unity proposal has expired.");
|
|
sendSystemMessage(self, marriage.SID_EXPIRED_PLAYER);
|
|
}
|
|
}
|
|
|
|
if ( utils.hasScriptVar(self, marriage.VAR_PROPOSEDTO_TARGET) )
|
|
{
|
|
string proposer = utils.getStringScriptVar(self, marriage.VAR_PROPOSEDTO_NAME);
|
|
if ( proposer != null && !proposer.equals("") )
|
|
{
|
|
//sendSystemMessageTestingOnly(self, "The unity proposal from " + proposer + " has expired.");
|
|
prose_package ppExpireTarget = prose.getPackage(marriage.PROSE_EXPIRE_TARGET, proposer);
|
|
sendSystemMessageProse(self, ppExpireTarget);
|
|
}
|
|
else
|
|
{
|
|
//sendSystemMessageTestingOnly(self, "The unity proposal has expired.");
|
|
sendSystemMessage(self, marriage.SID_EXPIRED_TARGET);
|
|
}
|
|
}
|
|
|
|
detachScript(self, marriage.SCRIPT_UNITY);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleAcceptFail()
|
|
{
|
|
if ( utils.hasScriptVar(self, marriage.VAR_PROPOSAL_TARGET) )
|
|
{
|
|
string proposee = utils.getStringScriptVar(self, marriage.VAR_PROPOSAL_NAME);
|
|
if ( proposee != null && !proposee.equals("") )
|
|
{
|
|
prose_package ppAcceptFail = prose.getPackage(marriage.PROSE_ACCEPT_FAIL, proposee);
|
|
sendSystemMessageProse(self, ppAcceptFail);
|
|
}
|
|
else
|
|
{
|
|
sendSystemMessage(self, marriage.SID_ACCEPT_FAIL);
|
|
}
|
|
}
|
|
|
|
detachScript(self, marriage.SCRIPT_UNITY);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleProposalDeclined()
|
|
{
|
|
if ( utils.hasScriptVar(self, marriage.VAR_PROPOSAL_TARGET) )
|
|
{
|
|
string proposee = utils.getStringScriptVar(self, marriage.VAR_PROPOSAL_NAME);
|
|
if ( proposee != null && !proposee.equals("") )
|
|
{
|
|
prose_package ppDeclined = prose.getPackage(marriage.PROSE_DECLINED, proposee);
|
|
sendSystemMessageProse(self, ppDeclined);
|
|
}
|
|
else
|
|
{
|
|
sendSystemMessage(self, marriage.SID_DECLINED);
|
|
}
|
|
}
|
|
|
|
detachScript(self, marriage.SCRIPT_UNITY);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleRingExchange()
|
|
{
|
|
//debugSpeakMsg(self,"Entered handleRingExchange...");
|
|
obj_id other = params.getObjId("other");
|
|
obj_id ring = params.getObjId("ring");
|
|
obj_id inv = params.getObjId("inv");
|
|
if ( isIdValid(other) && isIdValid(ring) && isIdValid(inv) )
|
|
{
|
|
putInOverloaded(ring, inv);
|
|
|
|
params.put("other",self);
|
|
params.remove("inv");
|
|
|
|
prose_package ppExchangeRings = prose.getPackage(marriage.SID_YOU_EXCHANGE_RINGS);
|
|
prose.setTT(ppExchangeRings, getAssignedName(other));
|
|
sendSystemMessageProse(self, ppExchangeRings);
|
|
messageTo(other, marriage.HANDLER_RING_SETUP, params, 1, false);
|
|
}
|
|
else
|
|
{
|
|
marriage.weddingError(self);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleRingSetup()
|
|
{
|
|
//debugSpeakMsg(self,"Entered handleRingSetup...");
|
|
obj_id spouse = params.getObjId("other");
|
|
obj_id ring = params.getObjId("ring");
|
|
if ( isIdValid(ring) && isIdValid(spouse) )
|
|
{
|
|
obj_id inv = utils.getInventoryContainer(self);
|
|
obj_id ring_l = getObjectInSlot(self, "ring_l");
|
|
if ( isIdValid(inv) && isIdValid(ring_l) )
|
|
putInOverloaded(ring_l, inv);
|
|
|
|
/*obj_id ring_r = getObjectInSlot(self, "ring_r");
|
|
if ( isIdValid(inv) && isIdValid(ring_r) )
|
|
putInOverloaded(ring_r, inv);*/
|
|
|
|
if ( equip(ring, self, "ring_l") )
|
|
{
|
|
attachScript(ring, marriage.SCRIPT_RING_UNITY);
|
|
|
|
string spouseName = getAssignedName(spouse);
|
|
|
|
setObjVar(self, marriage.VAR_SPOUSE_ID, spouse);
|
|
setObjVar(self, marriage.VAR_SPOUSE_NAME, spouseName);
|
|
setObjVar(self, marriage.VAR_RING, ring);
|
|
|
|
prose_package pp = prose.getPackage(marriage.PROSE_WED_COMPLETE, spouse);
|
|
sendSystemMessageProse(self, pp);
|
|
|
|
detachScript(self, marriage.SCRIPT_UNITY);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
else
|
|
{
|
|
//debugSpeakMsg(self,"unable to equip ring!");
|
|
}
|
|
}
|
|
|
|
marriage.weddingError(self);
|
|
return SCRIPT_CONTINUE;
|
|
} |