ldmud-3.2.9/doc/
ldmud-3.2.9/doc/efun/
ldmud-3.2.9/mud/
ldmud-3.2.9/mud/heaven7/
ldmud-3.2.9/mud/heaven7/lib/
ldmud-3.2.9/mud/lp-245/
ldmud-3.2.9/mud/lp-245/banish/
ldmud-3.2.9/mud/lp-245/doc/
ldmud-3.2.9/mud/lp-245/doc/examples/
ldmud-3.2.9/mud/lp-245/doc/sefun/
ldmud-3.2.9/mud/lp-245/log/
ldmud-3.2.9/mud/lp-245/obj/Go/
ldmud-3.2.9/mud/lp-245/players/lars/
ldmud-3.2.9/mud/lp-245/room/death/
ldmud-3.2.9/mud/lp-245/room/maze1/
ldmud-3.2.9/mud/lp-245/room/sub/
ldmud-3.2.9/mud/lp-245/secure/
ldmud-3.2.9/mud/morgengrauen/
ldmud-3.2.9/mud/morgengrauen/lib/
ldmud-3.2.9/mud/sticklib/
ldmud-3.2.9/mud/sticklib/src/
ldmud-3.2.9/mudlib/uni-crasher/
ldmud-3.2.9/pkg/
ldmud-3.2.9/pkg/debugger/
ldmud-3.2.9/pkg/diff/
ldmud-3.2.9/pkg/misc/
ldmud-3.2.9/src/autoconf/
ldmud-3.2.9/src/bugs/
ldmud-3.2.9/src/bugs/MudCompress/
ldmud-3.2.9/src/bugs/b-020916-files/
ldmud-3.2.9/src/bugs/doomdark/
ldmud-3.2.9/src/bugs/ferrycode/ferry/
ldmud-3.2.9/src/bugs/ferrycode/obj/
ldmud-3.2.9/src/bugs/psql/
ldmud-3.2.9/src/done/
ldmud-3.2.9/src/done/order_alist/
ldmud-3.2.9/src/done/order_alist/obj/
ldmud-3.2.9/src/done/order_alist/room/
ldmud-3.2.9/src/gcc/
ldmud-3.2.9/src/gcc/2.7.0/
ldmud-3.2.9/src/gcc/2.7.1/
ldmud-3.2.9/src/hosts/
ldmud-3.2.9/src/hosts/GnuWin32/
ldmud-3.2.9/src/hosts/amiga/NetIncl/
ldmud-3.2.9/src/hosts/amiga/NetIncl/netinet/
ldmud-3.2.9/src/hosts/amiga/NetIncl/sys/
ldmud-3.2.9/src/hosts/i386/
ldmud-3.2.9/src/hosts/msdos/byacc/
ldmud-3.2.9/src/hosts/msdos/doc/
ldmud-3.2.9/src/hosts/os2/
ldmud-3.2.9/src/hosts/win32/
ldmud-3.2.9/src/util/
ldmud-3.2.9/src/util/erq/
ldmud-3.2.9/src/util/indent/hosts/next/
ldmud-3.2.9/src/util/xerq/
ldmud-3.2.9/src/util/xerq/lpc/
ldmud-3.2.9/src/util/xerq/lpc/www/
#include <types.h>
#include <mudlib.h>
#include <material.h>
#include <treasure.h>
inherit TREASURE;

int loaded;
object ship_ob;

void reset(int arg) {
  ::reset(arg);
  if(arg) return;
  set_treasure_type(TYP_TRINKET);
  set_material(MAT_WOOD);
  set_name("catapult");
  set_alias("catapult");
  set_short("A huge catapult");
  set_long("\
A large catapult that is used to destroy any enemy ship that it fires upon\n\
in battle. It launches huge boulders at it's target. It is manned by a well\n\
trained crew of 4 hardened sailors.\n");
  set_weight(10000);
  set_value(0);
  loaded = 0;
}

void init() {
  ::init();
  add_action("load","load");
  add_action("fire","fire");
}

int load(string str) {
  ship_ob = environment(this_object())->query_ship();
  if(!ship_ob->query_captains(this_player()->query_real_name())) {
    write("The catapult crew ignores you.\n");
    return 1;
  }
  if(str == "catapult") {
    if(ship_ob->query_bolts() <= 0) {
      write("The catapult crew looks around, but can't find any to load.\n");
      return 1;
    }
    if(loaded) {
      write("It is already loaded.\n");
      return 1;
    }
    else {
      loaded = 1;
      write("The sailors load the catapult.\n");
      return 1;
    }
  }
  return 0;
}

int fire(string str) {
  ship_ob = environment(this_object())->query_ship();
  if(!ship_ob->query_captains(this_player()->query_real_name())) {
    write("The catapult crew ignores you.\n");
    return 1;
  }
  if(str == "catapult") {
    int portopen;
    portopen = environment()->query_opened();
    if(!loaded) {
      write("It isn't loaded.\n");
      return 1;
    }
    if(!portopen) {
      write("A sailor says: We can't do that with the porthole closed.\n");
      return 1;
    }
    else {
      loaded = 0;
      write("The sailors fire a round from the catapult.\n");
      ship_ob->restore_bolts(-1);
      return 1;
    }
  }
  return 0;
}