Files
dsrc/sku.0/sys.server/compiled/game/script/item/trigger_breach_sound.script
T
2013-09-10 23:17:15 -07:00

141 lines
3.6 KiB
Plaintext

/**
* Copyright (c) ©2003 Sony Online Entertainment Inc.
* All Rights Reserved
*
* Title: trigger_breach_sound.script
* Description: creates a trigger volume that when breached will play a sound
* @author $Author:$
* @version $Revision: #1 $
*/
//------------------------------------------------
// Includes
//------------------------------------------------
include library.utils;
//------------------------------------------------
// Constants
//------------------------------------------------
const string_id SID_TURN_ON = new string_id("spam", "turn_on_sound_object");
const string_id SID_TURN_OFF = new string_id("spam", "turn_off_sound_object");
const string OBJVAR_SOUND_FILE = "soundFile";
const string OBJVAR_IS_TURNED_ON = "itemIsOn";
//------------------------------------------------
// OnInitialize
//------------------------------------------------
trigger OnInitialize()
{
if(!utils.isInHouseCellSpace(self))
return SCRIPT_CONTINUE;
if (!hasTriggerVolume(self, "itemBreach"))
createTriggerVolume("itemBreach", 5.f, true);
return SCRIPT_CONTINUE;
}
//------------------------------------------------
// OnTriggerVolumeEntered
//------------------------------------------------
trigger OnTriggerVolumeEntered( string volumeName, obj_id whoTriggeredMe )
{
if(!hasObjVar(self, OBJVAR_IS_TURNED_ON))
{
return SCRIPT_CONTINUE;
}
if(getIntObjVar(self, OBJVAR_IS_TURNED_ON) == 0)
{
return SCRIPT_CONTINUE;
}
if(volumeName == "itemBreach")
{
// Only players.
if(!isPlayer(whoTriggeredMe))
return SCRIPT_CONTINUE;
if(!hasObjVar(self, OBJVAR_SOUND_FILE))
return SCRIPT_CONTINUE;
string soundFile = getStringObjVar(self, OBJVAR_SOUND_FILE);
// Play the effect.
playClientEffectObj(whoTriggeredMe, soundFile, self, "", new transform(), "");
}
return SCRIPT_CONTINUE;
}
//------------------------------------------------
// OnObjectMenuRequest
//------------------------------------------------
trigger OnObjectMenuRequest( obj_id player, menu_info mi )
{
if(!utils.isInHouseCellSpace(self))
return SCRIPT_CONTINUE;
//if the object is off, or missing the objvar we change the menu option to 'On'
if(!hasObjVar(self, OBJVAR_IS_TURNED_ON) || getIntObjVar(self, OBJVAR_IS_TURNED_ON) == 0)
mi.addRootMenu(menu_info_types.SERVER_MENU1, SID_TURN_ON);
else
mi.addRootMenu(menu_info_types.SERVER_MENU1, SID_TURN_OFF);
return SCRIPT_CONTINUE;
}
//------------------------------------------------
// OnObjectMenuSelect
//------------------------------------------------
trigger OnObjectMenuSelect( obj_id player, int item )
{
sendDirtyObjectMenuNotification(self);
if(!utils.isInHouseCellSpace(self))
return SCRIPT_CONTINUE;
if(item == menu_info_types.SERVER_MENU1)
{
//if the object is off, or missing the objvar we turn the item 'On'
if(!hasObjVar(self, OBJVAR_IS_TURNED_ON) || getIntObjVar(self, OBJVAR_IS_TURNED_ON) == 0)
toggleSound(self, true);
else
toggleSound(self, false);
}
return SCRIPT_CONTINUE;
}
//------------------------------------------------
// functions
//------------------------------------------------
//turns the item on and off
boolean toggleSound(obj_id item, boolean turnOn)
{
if(turnOn)
{
//store the fact that it is on
setObjVar(item, OBJVAR_IS_TURNED_ON, true);
//create the trigger volume if it is missing
if(!hasTriggerVolume(item, "itemBreach"))
createTriggerVolume("itemBreach", 5.f, true);
}
else
{
//store the fact that it is on
setObjVar(item, OBJVAR_IS_TURNED_ON, false);
//destroy the trigger volume if it exists
if(hasTriggerVolume(item, "itemBreach"))
removeTriggerVolume("itemBreach");
}
return true;
}