Difference between revisions of "Script: Opengate"
From Ultima Online: The Second Age
(Created page with " <span style="color:#0000FF">inherits</span> spelskil; <span style="color:#0000FF">member</span> <span style="color:#0000FF">loc</span> Q4OG; <span style="color:#0000FF...") |
|||
Line 26: | Line 26: | ||
{ | { | ||
[[Script_Function:_Q5Z2|<span style="color:#2B91AF">Q5Z2</span>]](player, Q4OG); | [[Script_Function:_Q5Z2|<span style="color:#2B91AF">Q5Z2</span>]](player, Q4OG); | ||
− | <span style="color:#0000FF">if</span> ([[ | + | <span style="color:#0000FF">if</span> ([[Engine Function:_teleport|<span style="color:#FF0000;font-weight:bold">teleport</span>]](player, Q4OG)) |
{ | { | ||
sfx([[Engine Function:_getLocation|<span style="color:#FF0000;font-weight:bold">getLocation</span>]](player), 0x01FE, 0x00); | sfx([[Engine Function:_getLocation|<span style="color:#FF0000;font-weight:bold">getLocation</span>]](player), 0x01FE, 0x00); | ||
Line 75: | Line 75: | ||
{ | { | ||
[[Script_Function:_Q4K1|<span style="color:#2B91AF">Q4K1</span>]](gate, Q68S); | [[Script_Function:_Q4K1|<span style="color:#2B91AF">Q4K1</span>]](gate, Q68S); | ||
− | Q527 = [[ | + | Q527 = [[Engine Function:_teleport|<span style="color:#FF0000;font-weight:bold">teleport</span>]](Q68S, [[Engine Function:_getLocation|<span style="color:#FF0000;font-weight:bold">getLocation</span>]](gate)); |
<span style="color:#0000FF">return</span> (0x00); | <span style="color:#0000FF">return</span> (0x00); | ||
} | } |
Latest revision as of 07:26, 19 October 2018
inherits spelskil;
member loc Q4OG; member int Q5FU;
trigger creation { setX(Q4OG, getObjVar(this, "xPoint")); setY(Q4OG, getObjVar(this, "yPoint")); setZ(Q4OG, getObjVar(this, "zPoint")); return (0x00); }
function void Q4K1(obj me, obj player) { list Q59P; appendToList(Q59P, 0x00); appendToList(Q59P, "Yes"); appendToList(Q59P, 0x01); appendToList(Q59P, "No"); selectType(player, me, 0x2C, "Dost thou wish to step into the moongate?", Q59P); return (); }
function int Q4K2(obj me, obj player) { Q5Z2(player, Q4OG); if (teleport(player, Q4OG)) { sfx(getLocation(player), 0x01FE, 0x00); return (0x01); } return (0x00); }
function int Q4C6(obj me, obj player) { if ((inJusticeRegion(getLocation(me))) && (!inJusticeRegion(Q4OG))) { return (0x01); } return (0x00); }
function int Q4ZP(obj gate, obj it) { if (!Q5FU) { return (0x00); } if (getDistanceInTiles(getLocation(gate), getLocation(it)) > 0x01) { return (0x00); } int Q5YU = getZ(getLocation(it)); int Q5AW = getZ(getLocation(gate)); int Q5AD = getHeight(gate); int Q5AT = Q5AW + Q5AD; if ((Q5YU < Q5AW) || (Q5YU > Q5AT)) { return (0x00); } return (0x01); }
function int Q4K3(obj gate, obj Q68S) { if (!Q4ZP(gate, Q68S)) { return (0x01); } Q48E(Q68S); int Q527; if (Q4C6(gate, Q68S)) { Q4K1(gate, Q68S); Q527 = teleport(Q68S, getLocation(gate)); return (0x00); } else { Q527 = Q4K2(gate, Q68S); } return (0x00); }
trigger enterrange(0x00) { return (Q4K3(this, target)); }
trigger use { if (getLocation(this) == getLocation(user)) { int Q527 = Q4K3(this, user); } return (0x00); }
trigger typeselected(0x2C) { if (listindex == 0x00) { return (0x00); } if (objtype != 0x00) { return (0x00); } if (!Q4ZP(this, user)) { return (0x00); } int Q527 = Q4K2(this, user); return (0x00); }
trigger callback(0x79) { loc Q4FZ = getLocation(this); int okay = 0x01; if (!hasObjVar(this, "sourceGate")) { deleteObject(this); } if (isAnyMultiAt(Q4FZ) != NULL()) { okay = 0x00; } if (Q46M(Q4FZ, this)) { okay = 0x00; } list Q5QZ; appendToList(Q5QZ, okay); obj Q5UE = getObjVar(this, "sourceGate"); appendToList(Q5QZ, this); multimessage(Q5UE, "gatestatus", Q5QZ); Q5FU = okay; if (!okay) { deleteObject(this); } return (0x01); }
trigger message("gatestatus") { int i = args[0x00]; if (i) { Q5FU = 0x01; } else { deleteObject(this); } return (0x01); }