home *** CD-ROM | disk | FTP | other *** search
/ Amiga Special: Spiele Hits / Hits-CD.iso / aminet / spiele / ammud1_1.lha / AmigaMUD / Src / Building / bguild.m next >
Text File  |  1997-01-30  |  30KB  |  677 lines

  1. /*
  2.  * Amiga MUD
  3.  *
  4.  * Copyright (c) 1997 by Chris Gray
  5.  */
  6.  
  7. /*
  8.  * bguild.m - set up the builder's guild.
  9.  */
  10.  
  11. private tp_bguild CreateTable()$
  12. use tp_bguild
  13.  
  14. use t_streets
  15.  
  16. define tp_bguild BGUILD_ID NextEffectId()$
  17.  
  18. define tp_bguild proc drawGuild()void:
  19.  
  20.     if not KnowsEffect(nil, BGUILD_ID) then
  21.     DefineEffect(nil, BGUILD_ID);
  22.     GSetImage(nil, "Town/bguild");
  23.     IfFound(nil);
  24.         ShowCurrentImage();
  25.     Else(nil);
  26.         GSetPen(nil, C_TAN);
  27.         GAMove(nil, 0.386, 0.26);
  28.         GADraw(nil, 0.386, 0.16);
  29.         GADraw(nil, 0.448, 0.16);
  30.         GADraw(nil, 0.448, 0.26);
  31.         GAMove(nil, 0.0, 0.26);
  32.         GADraw(nil, 0.495, 0.26);
  33.         GADraw(nil, 0.495, 0.86);
  34.         GADraw(nil, 0.0, 0.86);
  35.         GADraw(nil, 0.0, 0.26);
  36.         GAMove(nil, 0.158, 0.26);
  37.         GADraw(nil, 0.158, 0.86);
  38.         GAMove(nil, 0.158, 0.48);
  39.         GADraw(nil, 0.339, 0.48);
  40.         GAMove(nil, 0.158, 0.64);
  41.         GADraw(nil, 0.339, 0.64);
  42.         GAMove(nil, 0.248, 0.26);
  43.         GADraw(nil, 0.248, 0.48);
  44.         GAMove(nil, 0.248, 0.64);
  45.         GADraw(nil, 0.248, 0.86);
  46.         GAMove(nil, 0.339, 0.26);
  47.         GADraw(nil, 0.339, 0.48);
  48.         GAMove(nil, 0.339, 0.64);
  49.         GADraw(nil, 0.339, 0.86);
  50.     
  51.         GSetPen(nil, C_BROWN);
  52.         GAMove(nil, 0.186, 0.48);
  53.         HorizontalDoor();
  54.         GAMove(nil, 0.277, 0.48);
  55.         HorizontalDoor();
  56.         GAMove(nil, 0.186, 0.64);
  57.         HorizontalDoor();
  58.         GAMove(nil, 0.277, 0.64);
  59.         HorizontalDoor();
  60.         GAMove(nil, 0.402, 0.26);
  61.         HorizontalDoor();
  62.         GAMove(nil, 0.158, 0.52);
  63.         VerticalDoor();
  64.         GAMove(nil, 0.495, 0.52);
  65.         VerticalDoor();
  66.         GAMove(nil, 0.283, 0.86);
  67.         GADraw(nil, 0.3, 0.86);
  68.  
  69.         GSetPen(nil, C_GOLD);
  70.         GAMove(nil, 0.08, 0.56);
  71.         GRMovePixels(nil, -12, 3);
  72.         GText(nil, "LIB");
  73.         GAMove(nil, 0.204, 0.37);
  74.         GRMovePixels(nil, -4, 3);
  75.         GText(nil, "A");
  76.         GAMove(nil, 0.294, 0.37);
  77.         GRMovePixels(nil, -4, 3);
  78.         GText(nil, "B");
  79.         GAMove(nil, 0.204, 0.75);
  80.         GRMovePixels(nil, -4, 3);
  81.         GText(nil, "W");
  82.         GAMove(nil, 0.294, 0.75);
  83.         GRMovePixels(nil, -4, 3);
  84.         GText(nil, "M");
  85.     Fi(nil);
  86.     EndEffect();
  87.     fi;
  88.     CallEffect(nil, BGUILD_ID);
  89. corp;
  90.  
  91. define tp_bguild GUILD_MAP_GROUP NextMapGroup()$
  92.  
  93. define tp_bguild r_buildEntry CreateThing(r_indoors)$
  94. SetupRoom(r_buildEntry, "in the foyer of the builder's guild",
  95.     "The floor in here is an expensive-looking black and white tile. Potted "
  96.     "plants abound, as do black leather upholstery and brass fixtures. A long "
  97.     "hallway leads off to the west, a small door half-hidden behind a palm "
  98.     "tree leads north, and the doors out to the street are to the east.")$
  99. r_buildEntry@p_rNoMachines := true$
  100. Connect(r_sw2, r_buildEntry, D_WEST)$
  101. Connect(r_sw2, r_buildEntry, D_ENTER)$
  102. ExtendDesc(r_sw2,
  103.     "There is a fancy entryway here, complete with a somewhat worn red carpet "
  104.     "and overhead marquee. Double glass doors lead into a large entry hall. "
  105.     "There are potted shrubs to either side of the door, and a brass sign "
  106.     "beside the door reads \"Builder's Guild\".")$
  107. RoomGraphics(r_buildEntry, "Foyer", "", GUILD_MAP_GROUP,
  108.          0.417, 0.56, drawGuild)$
  109. Sign(r_sw2, "sign;brass.door;brass,sign,beside,the",
  110.     "The brass sign is one of those expensive things carved from a hunk of "
  111.     "brass. The resulting raised letters are brass coloured, and the "
  112.     "carved-out areas are painted flat black.",
  113.     "\"Builder's Guild\"")$
  114. Scenery(r_sw2,
  115.     "entryway,entry;fancy."
  116.     "carpet;somewhat,worn,red."
  117.     "marquee;overhead."
  118.     "door;double,glass."
  119.     "hall;large,entry."
  120.     "shrub;potted")$
  121. Scenery(r_buildEntry,
  122.     "floor;expensive,black,and,white,tiled."
  123.     "tile;expensive,black,and,white."
  124.     "plant;potted."
  125.     "upholstery;black,leather."
  126.     "fixture;brass."
  127.     "hallway;long."
  128.     "tree;palm."
  129.     "door;small,wooden")$
  130.  
  131. define tp_bguild r_buildHall1 CreateThing(r_indoors)$
  132. SetupRoom(r_buildHall1, "in an east-west hallway",
  133.     "On each side of the hall are simple wooden doors. Beside each is a sign "
  134.     "which reads \"Members Only\". The entry hall is to the east.")$
  135. Connect(r_buildEntry, r_buildHall1, D_WEST)$
  136. RoomGraphics(r_buildHall1, "East", "Hallway", GUILD_MAP_GROUP,
  137.          0.293, 0.56, drawGuild)$
  138. Scenery(r_buildHall1, "door;simple,wooden")$
  139. Sign(r_buildHall1, "sign", "", "\"Members Only\"")$
  140.  
  141. define tp_bguild r_buildHall2 CreateThing(r_indoors)$
  142. SetupRoom(r_buildHall2, "in an east-west hallway",
  143.     "On each side of the hall are simple wooden doors. Beside each is a sign "
  144.     "which reads \"Members Only\". A set of double doors to the west marks "
  145.     "the end of the hallway. Beside those doors is a sign which reads "
  146.     "\"Library\".")$
  147. Connect(r_buildHall1, r_buildHall2, D_WEST)$
  148. RoomGraphics(r_buildHall2, "West", "Hallway", GUILD_MAP_GROUP,
  149.          0.202, 0.56, drawGuild)$
  150. Scenery(r_buildHall2, "door;simple,wooden,double")$
  151. Sign(r_buildHall2, "sign", "", "")$
  152. Sign(r_buildHall2, "sign", "", "")$
  153.  
  154. define tp_bguild r_buildLibrary CreateThing(r_indoors)$
  155. SetupRoom(r_buildLibrary, "in the builder's library",
  156.     "Rows and rows of shelves here are filled to overflowing with plans, "
  157.     "blueprints, permits, announcements, etc. Most of the material is of no "
  158.     "interest, but one set of volumes bears investigation. Double doors lead "
  159.     "out to the east.")$
  160. Connect(r_buildHall2, r_buildLibrary, D_WEST)$
  161. UniConnect(r_buildLibrary, r_buildHall2, D_EXIT)$
  162. RoomGraphics(r_buildLibrary, "Library", "", GUILD_MAP_GROUP,
  163.          0.079, 0.56, drawGuild)$
  164. Scenery(r_buildLibrary,
  165.     "shelves,shelf;rows,and,of."
  166.     "plan."
  167.     "blueprint."
  168.     "announcement."
  169.     "material")$
  170. Sign(r_buildLibrary, "volume;set,of.set",
  171.     "The volumes you see are the ones you should read.",
  172.     "Read the volumes by name, one at a time.")$
  173.  
  174. define tp_bguild o_buildBook1 CreateThing(nil)$
  175. SetupObject(o_buildBook1, r_buildLibrary, "introduction,intro;book,of.book",
  176.     "This tattered volume is right at the beginning of the heap. It is "
  177.     "securely attached to the shelf by a brass chain, so you can't take it "
  178.     "out. The text inside describes the miscellaneous building commands.")$
  179. o_buildBook1@p_oNotGettable := true$
  180. o_buildBook1@p_oReadString :=
  181. "The following miscellaneous build (@) commands exist:\n"
  182. "  @showtable <table> - show the symbols defined in the table.\n"
  183. "  @describesymbol <table> <symbol> - describe the given symbol.\n"
  184. "  @deletesymbol <table> <symbol> - delete the given symbol. You must be the\n"
  185. "\towner of the symbol in order to delete it.\n"
  186. "  @movesymbol <fromtable> <totable> <symbol> - move a symbol from one table\n"
  187. "\tto another.\n"
  188. "  @renamesymbol <table> <old-symbol> <new-symbol> - rename a symbol.\n"
  189. "  @flag <table> <symbol> - define a new flag property.\n"
  190. "  @counter <table> <symbol> - define a new counter property.\n"
  191. "  @string <table> <symbol> - define a new string property.\n"
  192. "  @table <table> <symbol> - define a new private table.\n"
  193. "  @use <table> - add table to set used for symbol lookup.\n"
  194. "  @unuse <table> - remove table from set used for symbol lookup.\n"
  195. "  @symbolhere <table> <symbol> - define the given symbol for this room.\n"
  196. "  @poof <symbol> - poof to your given named room.\n"
  197. "Use table name 'private' to refer to your main private symbol table.\n"
  198. "Only an Apprentice or Wizard can make you an official builder."$
  199.  
  200. define tp_bguild o_buildBook2 CreateThing(nil)$
  201. SetupObject(o_buildBook2, r_buildLibrary, "rooms,room;book,of.book",
  202.     "This book shows much sign of wear. If it wasn't attached to the wall "
  203.     "with an iron chain, it probably wouldn't be here anymore! Inside, it "
  204.     "details the basic methods for building rooms.")$
  205. o_buildBook2@p_oNotGettable := true$
  206. o_buildBook2@p_oReadString :=
  207. "The following forms of the @room (@r) command exist:\n"
  208. "  @room new <dir> <kind> <room-name> - create a new room with a two-way\n"
  209. "\tlink in the indicated direction. <kind> is one of: indoors, forest\n"
  210. "\toutdoors, field, road, path, sidewalk or park. <room-name> is the\n"
  211. "\tstring which will be printed after the 'You are'. E.g.\n"
  212. "\t\t@room new north indoors in a new room\n"
  213. "  @room newname <room-name> - rename the current room.\n"
  214. "  @room same <old-dir> <new-dir> - make a one-way link in di