Script: Resmenu

From Ultima Online: The Second Age
Jump to: navigation, search
inherits spelskil;
function int Q41S(int listindex, obj usedon)
{
  if (listindex == 0x00)
  {
    return (0x00);
  }
  if (!isDead(usedon))
  {
    return (0x00);
  }
  if ((!hasObjVar(usedon, "resurrectLocation")) || (!hasObjVar(usedon, "resurrectCaster")))
  {
    return (0x00);
  }
  loc Q4VS = getLocation(usedon);
  loc there = getObjVar(usedon, "resurrectLocation");
  obj caster = getObjVar(usedon, "resurrectCaster");
  if (Q4VS != there)
  {
    systemMessage(usedon, "Thou hast wandered too far from the site of thy resurrection!");
    return (0x00);
  }
  loc target = getLocation(usedon);
  int Q4XW = getHeight(usedon);
  if (0x07 != canExistAt(target, Q4XW, 0x01))
  {
    systemMessage(usedon, "Thou can not be resurrected there!");
    return (0x00);
  }
  return (0x01);
}
function void Q43V(obj usedon)
{
  removeObjVar(usedon, "resurrectLocation");
  removeObjVar(usedon, "resurrectCaster");
  removeObjVar(usedon, "resurrectType");
  removeObjVar(usedon, "resurrectDesc");
  return ();
}
function void Q43U(obj usedon)
{
  setMobFlag(usedon, 0x02, 0x00);
  Q43V(usedon);
  detachScript(usedon, "resmenu");
  return ();
}
function void Q4KW(obj usedon)
{
  string desc = getObjVar(usedon, "resurrectDesc");
  list Q59P;
  appendToList(Q59P, 0x00);
  appendToList(Q59P, "YES - You choose to try to come back to life now.");
  appendToList(Q59P, 0x01);
  appendToList(Q59P, "NO - You prefer to remain a ghost for now.");
  selectType(usedon, this, 0x2D, desc, Q59P);
  return ();
}
trigger creation
{
  callback(this, 0xB4, 0x7E);
  setMobFlag(this, 0x02, 0x01);
  Q4KW(this);
  return (0x01);
}
trigger logout
{
  Q43U(this);
  return (0x01);
}
trigger objectloaded
{
  Q43U(this);
  return (0x01);
}
trigger online
{
  Q43U(this);
  return (0x01);
}
trigger callback(0x7E)
{
  Q43U(this);
  return (0x01);
}
trigger typeselected(0x2D)
{
  if (!Q41S(listindex, user))
  {
    Q43U(this);
    return (0x01);
  }
  int Q65M = getObjVar(this, "resurrectType");
  switch (objtype)
  {
  case 0x00
    sfx(getLocation(user), 0x0214, 0x00);
    int Q527 = resurrect(user, 0x00);
    if (Q65M > 0x00)
    {
      setCurHP(user, 0x0A);
      if (Q65M > 0x01)
      {
        if (isInArea("heal", getLocation(this), 0x00))
        {
          setCurHP(user, getMaxHP(user));
          setCurFatigue(user, getMaxFatigue(user));
        }
      }
    }
    callback(this, 0x00, 0x48);
    break;
  case 0x01
  default
    break;
  }
  Q43U(this);
  return (0x01);
}