uox3/data/js/server/misc/warning_trigger.js
2025-08-13 14:55:28 +10:00

72 lines
2.4 KiB
JavaScript

/// <reference path="../../definitions.d.ts" />
// @ts-check
// Warning Script
// Last updated: 10/11/2021
//
// Display a warning as player approaches/collides with an object
// Range at which onMoveDetect triggers is determined by part 1 of object's MORE property
// Warning on movement will only display once per user per server session (until temp tag expires, basically)
/** @type { ( targSock: Socket, objColliding: Character, objCollideWith: BaseObject ) => boolean } */
function onCollide( pSock, pChar, iObject )
{
if( !ValidateObject( pChar ) || !pChar.isChar || pChar.npc || pChar.dead || pChar.isGM || pChar.isCounselor || pChar.visible == 3 )
return false;
DisplayWarningText( iObject, pChar, false );
return false;
}
/** @type { ( sourceObj: BaseObject, CharInRange: Character, rangeToChar: number, oldCharX: number, oldCharY: number ) => boolean } */
function onMoveDetect( iObj, pChar, rangeToChar, oldCharX, oldCharY )
{
if( !ValidateObject( pChar ) || !pChar.isChar || pChar.npc || pChar.dead || pChar.isGM || pChar.isCounselor || pChar.visible == 3 )
return true;
var maxRange = iObj.GetMoreVar( "more", 1 );
if( rangeToChar == maxRange )
{
DisplayWarningText( iObj, pChar, true );
}
return true;
}
function DisplayWarningText( iObject, trgChar, checkHistory )
{
if( checkHistory && iObject.GetTempTag( "char" + ( trgChar.serial ).toString() ))
return;
var warningText = "";
switch( iObject.morez )
{
case 500761: // warning text on brazier in Deceit lvl 1
warningText = "Heed this warning well, and use this brazier at your own peril.";
break;
case 500715: // warning text on painting in Covetous
warningText = "You notice something odd about the frame of the painting.";
break;
case 500717: // warning text on throne in Covetous
warningText = "A small piece of paper seems to be wedged beneath the throne.";
break;
case 1010056: // warning text on statue in Covetous
warningText = "Beware Ye Who Enter These Halls!";
break;
case 1010057: // warning text on statue in Covetous
warningText = "Go no farther, lest ye face thy death!";
break;
default:
warningText = iObject.desc;
break;
}
if( warningText != "" )
{
// Display a personalized warning to player, unseen to other eyes!
iObject.TextMessage( warningText, false, 0x3b2, 0, trgChar.serial );
if( checkHistory )
{
iObject.SetTempTag( "char" + ( trgChar.serial ).toString(), true );
}
}
}