@create #18181 named abstract's RPG FO for Lazy RPG'ers:abstract's RPG FO for Lazy RPG'ers
"#96200.("usage") => E_PERM (Permission denied)
;;#96200.("users") = {#90731, #94368, #98263, #94965, #94456, #104202, #97613, #104467, #91224, #58026, #102292, #101504, #106308, #90441, #87010, #58091, #85077, #63625, #56054, #50290, #103615, #91812, #103523, #88395, #108054, #108147, #108214, #108431, #103911, #69513, #110215, #86275, #106587, #90331, #104233, #59447, #71781, #109472, #112066, #110565, #112743, #112968, #110280, #106854, #101594, #113391, #87951, #59254, #113727, #89395, #93228, #113686, #106273, #110586, #103703, #114702, #114774, #114518, #113418, #114808, #114019, #113800, #110805, #115109, #105473, #115124, #113235, #113338, #114874, #91113, #114928, #112190, #115545, #107610, #107413, #110077, #87340, #115432, #80422, #37544, #114859, #116200, #116082, #107807, #71111, #116385, #37972, #87593, #116358, #116339, #107998, #107189, #113285, #112529, #115937, #116886, #116473, #115922, #117048, #117236, #117283, #112886, #117470, #30568, #117139, #115067, #117649, #109271, #115397, #116883, #12399, #118014, #118143, #117486, #90723, #98705, #118526, #118551, #118248, #109395, #118711, #118720, #117766, #118750, #115095, #118672, #118864, #92953, #118654, #117345, #119039, #119012, #38441, #119057, #114413, #59424, #119177, #118916, #118018, #118153, #119429, #112473, #119469, #115366, #112971, #118985, #87760, #119257, #119884, #111987, #119492, #118360, #115834, #118730, #118861, #120144, #88076, #91798, #112837, #112369, #116376, #119899, #120282, #106488, #119161, #109288, #119957, #119906, #120791, #114670, #110183, #121077, #120546, #121332, #121456, #113754, #120804, #121358, #121648, #121095, #87625, #121758, #121865, #109911, #121895, #106468, #121918, #121816, #121976, #121852, #121386, #114072, #122359, #119265, #122354, #122410, #110582, #122428, #118977, #122453, #122460, #122491, #122644}
;;#96200.("users_last_updated") = 922829506
;;#96200.("help_msg") = {}
;;#96200.("feature_verbs") = {"strip", "unstrip", "@takeall"}
;;#96200.("guest_ok") = 1
"#96200.("key") => E_PERM (Permission denied)
;;#96200.("aliases") = {"abstract's RPG FO for Lazy RPG'ers"}
;;#96200.("description") = "This is Sick's version of the Generic Feature Object.  It is not meant to be used as a feature object itself, but is handy for making new feature objects."
;;#96200.("object_size") = {17392, 1141286864}

@verb #96200:"check" any none none rxd
@program #96200:check
a = args[1];
for x in (a.contents)
  player:tell(x.name, "|", a);
endfor
.

@verb #96200:"wo*und dr*ain" any none none
@program #96200:wound
"This is the same as with #57580.";
"You got the wand, you must have good stats, you should know how to use this ;)";
"But in case you don't:";
"wo <TARGET>    will cast the wound spell on the target.";
"dr <TARGET>    will cast the drain spell on the target.";
doll = $local.rpg:get_doll(player);
staff = #-1;
for X in ({@doll.wielding, @doll.wearing})
  if ($object_utils:isa(X, #331))
    staff = X;
  endif
endfor
if (!valid(staff))
  player:Tell("You must wield a proper focus first.");
  return E_PERM;
endif
if (!$object_utils:has_verb(staff, "wound" || "drain"))
  player:tell("You need to wield something which can cast the wound or drain spell first...");
  return;
endif
if (dobjstr == "")
  player:tell("You need to define a target.");
  return;
endif
if (index(verb, "wo"))
  #272:wound(dobj, "with", staff);
  return;
endif
if (index(verb, "dr"))
  if ($local.rpg:get_doll(dobj) != #-1)
    staff:magic(player, dobj, "heal", 0, 0, 0, "drain");
  else
    player:tell("Your target is Dead to the life-magics.");
  endif
  return;
endif
.

@verb #96200:"strip" none none none rxd
@program #96200:strip
"Okay, this is a quick strip, removing all your armor.  (Primarily for MOOfu is this verb designed, but you can use it for just stripping anyway).";
"If you are holding a ghi, it will automatically wear it.";
this:update_usage(verb, player, args);
stripped = this.stripped;
if (!valid(doll = $local.rpg:get_doll(player)))
  player:tell(tostr("You can't strip.  You're not of the Bovine."));
endif
if (index = $list_utils:iassoc(player, this.stripped))
  this.stripped = setremove(this.stripped, this.stripped[index]);
endif
this.stripped = {@this.stripped, {player, @doll.wearing}};
for x in (doll.wearing)
  x:remove();
  $command_utils:suspend_if_needed(2);
endfor
for stuff in (player.contents)
  if ($object_utils:isa(stuff, #69882))
    stuff:wear();
  endif
endfor
player:tell("> Stripping finished.");
.

@verb #96200:"Testing" none none none rxd
@program #96200:Testing
"Okay, this is a quick strip, removing all your armor.  (Primarily for MOOfu is this verb designed, but you can use it for just stripping anyway).";
"If you are holding a ghi, it will automatically wear it.";
stripped = this.stripped;
if (!valid(doll = $local.rpg:get_doll(player)))
  player:tell(tostr("You can't strip.  You're not of the Bovine."));
endif
for x in (doll.wearing)
  this.stripped = {@stripped, {player, x}};
  x:remove();
endfor
for stuff in (player.contents)
  if ($object_utils:isa(stuff, #69882))
    stuff:wear();
  endif
endfor
player:tell("> Stripping finished.");
.

@verb #96200:"unstrip" none none none rxd
@program #96200:unstrip
"To unstrip what you've stripped..";
this:update_usage(verb, player, args);
if (!valid(doll = $local.rpg:get_doll(player)))
  player:tell("You're not of the Bovine...");
  return E_PERM;
endif
if (index = $list_utils:iassoc(player, this.stripped))
  for wearing in (this.stripped[index][2..length(this.stripped[index])])
    for ghi in (doll.wearing)
      if ($object_utils:isa(ghi, #69882))
        ghi:remove();
      endif
    endfor
    if (wearing in player.contents)
      wearing:wear();
    else
      player:tell("You're not carrying ", $string_utils:nn(wearing), " and thus you have not worn it.");
    endif
  endfor
  this.stripped = setremove(this.stripped, this.stripped[index]);
else
  player:tell("You never stripped, how ya meant to unstrip??");
  return E_PERM;
endif
.

@verb #96200:"@takeall" none none none rxd
@program #96200:@takeall
"This verb will take all RPG stuff in an RPG room for ou automatically.  You LAZY person you :)";
"Syntax (real simple):   @takeall    :)";
"Now just don't go racing to pick things up to sell to Paula  :)";
if (!valid(doll = $local.rpg:get_doll(player)))
  return player:tell("You're not of the Bovine and cannot use this Bovine verb.");
endif
this:update_usage(verb, player);
if (!$object_utils:isa(where = player.location, #258))
  return player:tell("You can only use this in an RPG room.");
elseif (doll.wielding)
  for weapon in (doll.wielding)
    weapon:unwield();
  endfor
endif
for x in (player.location.contents)
  if ($object_utils:isa(x, #517))
    x:get(this);
    $command_utils:suspend_if_needed(2);
  endif
endfor
player:tell("Done taking everything in this room.");
.

"***finished***