!% $MAX_ARRAYS=1500 !% $MAX_CLASSES=200 !% $MAX_VERBS=300 !% $MAX_LABELS=10000 !% $MAX_ZCODE_SIZE=50000 !% $MAX_STATIC_DATA=50000 !% $MAX_PROP_TABLE_SIZE=50000 !% $MAX_INDIV_PROP_TABLE_SIZE=20000 ! -------------------------------------------------------------------------- ! Generated by NI build: Constant NI_BUILD_COUNT "3Z95"; Array UUID_ARRAY string "UUID://2DF29535-6CDC-42D5-B864-17D27685A2EA//"; Constant Story SC_0; Constant Headline "An Interactive Fiction"; Constant Story_Author SC_1; Serial "061023"; #ifdef TARGET_ZCODE; Constant I6_NULL $ffff; #ifnot; Constant I6_NULL $ffffffff; #endif; Constant NO_PLACES; Constant PREFER_HELD; Constant START_MOVE 1; Constant HIGHEST_RULEBOOK_NO 364; Constant I7_OBJECT_TY 58; [ I7ExtensionVersions; print "Standard Rules version 1/060806 by Graham Nelson^"; ]; Global location = InformLibrary; Global sline1; Global sline2; Global I7_prompt_text = ">"; Global I7_command; Global I7_match_snippet; Global I7_mistake_code; Global I7_left_sl = SL_Location; Global I7_right_sl = SL_Score_Moves; Global I7_box; Global act_requester; Global I7_action_deciding_rule; Global I7_concealed_item; Global I7_TProp; Global I7_TSign; Global say__n; Array I7_CS --> 16; Array I7_boxes_appeared --> 1; Constant WITHOUT_DIRECTIONS; Constant I7_RANKING_TABLE = T0_rankings; Constant MAX_SCORE = 55; Global SACK_OBJECT; Constant RUCKSACK_CLASS = K10_player_s_holdall; ! --- Replacements of library routines --- Constant TEST_SCENARIOS_EXIST; #IFDEF DEBUG; #IFDEF TEST_SCENARIOS_EXIST; Replace KeyboardPrimitive; #ENDIF; #ENDIF; Replace DrawStatusLine; Replace BeforeRoutines; Replace ActionPrimitive; Replace AfterRoutines; Replace ObjectIsUntouchable; Replace AllowPushDir; Replace ActionsOnSub; Replace ActionsOffSub; Replace InvSub; Replace TakeSub; Replace RemoveSub; Replace DropSub; Replace PutOnSub; Replace InsertSub; Replace WaitSub; Replace GoSub; Replace EnterSub; Replace ExitSub; Replace GetOffSub; Replace LookSub; Replace ExamineSub; Replace LookUnderSub; Replace SearchSub; Replace ConsultSub; Replace LockSub; Replace UnlockSub; Replace SwitchOnSub; Replace SwitchOffSub; Replace OpenSub; Replace CloseSub; Replace WearSub; Replace DisrobeSub; Replace EatSub; Replace GiveSub; Replace ShowSub; Replace WakeOtherSub; Replace ThrowAtSub; Replace AttackSub; Replace KissSub; Replace AnswerSub; Replace TellSub; Replace AskSub; Replace AskForSub; Replace TouchSub; Replace WaveSub; Replace PullSub; Replace PushSub; Replace TurnSub; Replace PushDirSub; Replace SqueezeSub; Replace YesSub; Replace NoSub; Replace BurnSub; Replace WakeSub; Replace ThinkSub; Replace SmellSub; Replace ListenSub; Replace TasteSub; Replace CutSub; Replace JumpSub; Replace TieSub; Replace DrinkSub; Replace SorrySub; Replace StrongSub; Replace MildSub; Replace SwingSub; Replace RubSub; Replace SetToSub; Replace WaveHandsSub; Replace BuySub; Replace SingSub; Replace ClimbSub; Replace SleepSub; Replace ScoreSub; Replace QuitSub; Replace SaveSub; Replace RestoreSub; Replace RestartSub; Replace VerifySub; Replace VersionSub; Replace ScriptOnSub; Replace ScriptOffSub; Replace LMode3Sub; Replace LMode2Sub; Replace LMode1Sub; Replace PronounsSub; Replace NotifyOnSub; Replace NotifyOffSub; Replace A80_callingSub; Replace A81_feedingSub; Replace A82_usingSub; Replace A83_unpoweringSub; Replace A84_crushingSub; ! --- Variables used in printing --- Global say__c; Global say__p = 1; Global say__pc = 0; Global I7_caps_mode = false; ! --- Properties --- Property component_parent; Property component_child; Property component_sibling; Property I7_Map_Region; Property regional_found_in; ! --- Inclusion of library routines --- Include "Parser"; Include "VerbLib"; Array Protect_I7_Arrays --> 16339 12345; ! --- Attributes --- Attribute p55_unconscious; Attribute p57_bleeding; Attribute p59_pained; Attribute p61_hyper; Attribute p63_heavy; Attribute p65_broken; Attribute p67_burning; Property additive i7_kind; Attribute initially_carried; Attribute i7listflag; Attribute I7_mentioned; ! --- Quantities --- Constant Q31_cube_farm_1_panic = 1; Constant Q32_saving_stan = 2; Constant Q33_final_ending = 3; Array I7_Globals --> SC_1 ! 1: Q25_story_author "" ! 2: Q26_story_headline "" ! 3: Q27_story_genre "" ! 4: Q28_story_description 0 ! 5: Q29_release_number 0 ! 6: Q30_story_creation_year I6_NULL ; ! extent 7 words ! --- Activities --- Constant V0_printing_the_name_of_some = 0; Constant V1_listing_contents_of_somet = 1; Constant V2_grouping_together_somethi = 2; Constant V3_constructing_the_status_l = 3; Constant V4_listing_nondescript_items = 4; Constant V5_deciding_the_scope_of_som = 5; Constant V6_supplying_a_missing_noun = 6; Constant V7_supplying_a_missing_secon = 7; Constant V8_reading_a_command = 8; Constant V9_deciding_whether_all_incl = 9; Constant V10_printing_the_player_s_ob = 10; Constant V11_amusing_a_victorious_pla = 11; Constant V12_printing_the_banner_text = 12; Constant V13_printing_the_plural_name = 13; Constant V14_deciding_the_concealed_p = 14; Constant V15_printing_a_refusal_to_ac = 15; Constant V16_printing_the_announcemen = 16; Constant V17_printing_the_name_of_a_d = 17; Constant V18_printing_the_description = 18; Constant V19_printing_room_descriptio = 19; Constant V20_printing_a_parser_error = 20; Constant V21_implicitly_taking_someth = 21; Constant V22_starting_the_virtual_mac = 22; Constant V23_writing_a_paragraph_abou = 23; Array Activity_before_rulebooks --> 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 100 I6_NULL; Array Activity_when_rulebooks --> 32 35 38 41 44 47 50 53 56 59 62 65 68 71 74 77 80 83 86 89 92 95 98 101 I6_NULL; Array Activity_after_rulebooks --> 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 102 I6_NULL; Array Activity_atb_rulebooks -> 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 $ff; ! --- Variable used in debugging --- Global debug_rules = 0; Global debug_scenes = 0; ! --- Variables and arrays used in action processing --- Attribute pushable; Global move_pushing; Global move_from; Global move_to; Global move_by; Global move_through; Constant RS_CAPACITY = 666; Global rulechange_sp = 0; Array rulechange_stack --> RS_CAPACITY; Global los_rv = false; Array scene_started --> (3+2); Array scene_status --> (3+2); Array scene_endings --> (3+2); Array scene_latest_ending --> (3+2); Constant Relation_Implicit -1; Constant Relation_OtoO 1; Constant Relation_OtoV 2; Constant Relation_VtoO 3; Constant Relation_VtoV 4; Constant Relation_Sym_OtoO 5; Constant Relation_Sym_VtoV 6; Constant Relation_Equiv 7; Constant Relation_ByRoutine 8; Array RelationList --> 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" door_to Relation_OtoV "Leading-through relates one room (called the other side) to various doors" 0 Relation_Implicit "--" with_key Relation_OtoV "Lock-fitting relates one thing (called the matching key) to various things" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" 0 Relation_Implicit "--" I6_NULL; ! --- Printing routines --- [ I7_Kind_Name k; if (k == K1_room) print "room"; if (k == K2_thing) print "thing"; if (k == K3_direction) print "direction"; if (k == K4_door) print "door"; if (k == K5_container) print "container"; if (k == K6_supporter) print "supporter"; if (k == K7_backdrop) print "backdrop"; if (k == K8_person) print "person"; if (k == K9_region) print "region"; if (k == K10_player_s_holdall) print "player's holdall"; if (k == K11_device) print "device"; if (k == K24_animal) print "animal"; if (k == K25_man) print "man"; if (k == K26_woman) print "woman"; if (k == K27_player_character) print "player-character"; if (k == K30_vehicle) print "vehicle"; ]; ! --- Object tree --- Class K0_kind with vector 0 ; Class K1_room class K0_kind with n_to 0, ne_to 0, e_to 0, se_to 0, s_to 0, sw_to 0, w_to 0, nw_to 0, u_to 0, d_to 0, in_to 0, out_to 0, with vector 0 has light has ~visited has ~p67_burning with plural "rooms" ; Class K2_thing class K0_kind with before [; PushDir: AllowPushDir(); rtrue; ], with add_to_scope I7_ScopeParts, with component_parent nothing, component_sibling nothing, component_child nothing, with describe [ o; if (self has I7_mentioned ) rtrue; say__p = 0; CarryOutActivity( V23_writing_a_paragraph_abou , self); if (say__p) { give self I7_mentioned; rtrue; } ], with vector 0 has ~light has ~edible has ~transparent has ~concealed has ~scenery has ~static has ~clothing has ~workflag has lockable has ~p63_heavy has ~p65_broken with action_bitmap 0 0 0 0 0 0 ; Class K3_direction class K0_kind class CompassDirection, with vector 0 with plural "directions" with p10_opposite 0, with p11_inform_property 0, with p12_inform_object 0, ; Class K4_door class K2_thing with i7_kind K2_thing with vector 0 has static has ~pushable has door has ~open has openable has ~lockable has ~locked with plural "doors" ; Class K5_container class K2_thing with i7_kind K2_thing with vector 0 has container has open has ~openable has ~lockable has ~locked with plural "containers" ; Class K6_supporter class K2_thing with i7_kind K2_thing with vector 0 has transparent has static has supporter with plural "supporters" ; Class K7_backdrop class K2_thing with i7_kind K2_thing with vector 0 has scenery has static with plural "backdrops" ; Class K8_person class K2_thing with i7_kind K2_thing with vector 0 with capacity 100 has animate has ~female has ~neuter has ~p55_unconscious has ~p57_bleeding has ~p59_pained has ~p61_hyper with plural "persons" ; Class K9_region class K0_kind with vector 0 with plural "regions" ; Class K10_player_s_holdall class K5_container with i7_kind K5_container with vector 0 has ~static has openable with plural "player's holdalls" ; Class K11_device class K2_thing with i7_kind K2_thing with vector 0 has switchable has ~on with plural "devices" ; Class K24_animal class K8_person with i7_kind K8_person with vector 0 with plural "animals" ; Class K25_man class K8_person with i7_kind K8_person with vector 0 has male has ~female has ~neuter with plural "mans" ; Class K26_woman class K8_person with i7_kind K8_person with vector 0 has female has ~neuter with plural "women" ; Class K27_player_character class K8_person with i7_kind K8_person with description [; return L__M(##Miscellany, 19); ], before NULL, after NULL, life NULL, each_turn NULL, time_out NULL, before_implicit NULL, parse_name 0, orders 0, number 0, has proper transparent, with vector 0 with plural "player-characters" ; Class K30_vehicle class K5_container with i7_kind K5_container with before [; Go: return 1; ], with vector 0 has enterable has static with plural "vehicles" ; Object Value_Property_Holder ; Object n_obj "" Compass class K3_direction with i7_kind K3_direction with K3_Link ne_obj, with name 'n//' 'north' 'wall', door_dir n_to, with vector 0 with p10_opposite s_obj with short_name "north" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object ne_obj "" Compass class K3_direction with i7_kind K3_direction with K3_Link nw_obj, with name 'ne' 'northeast' 'wall', door_dir ne_to, with vector 0 with p10_opposite sw_obj with short_name "northeast" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object nw_obj "" Compass class K3_direction with i7_kind K3_direction with K3_Link s_obj, with name 'nw' 'northwest' 'wall', door_dir nw_to, with vector 0 with p10_opposite se_obj with short_name "northwest" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object s_obj "" Compass class K3_direction with i7_kind K3_direction with K3_Link se_obj, with name 's//' 'south' 'wall', door_dir s_to, with vector 0 with p10_opposite n_obj with short_name "south" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object se_obj "" Compass class K3_direction with i7_kind K3_direction with K3_Link sw_obj, with name 'se' 'southeast' 'wall', door_dir se_to, with vector 0 with p10_opposite nw_obj with short_name "southeast" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object sw_obj "" Compass class K3_direction with i7_kind K3_direction with K3_Link e_obj, with name 'sw' 'southwest' 'wall', door_dir sw_to, with vector 0 with p10_opposite ne_obj with short_name "southwest" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object e_obj "" Compass class K3_direction with i7_kind K3_direction with K3_Link w_obj, with name 'e//' 'east' 'wall', door_dir e_to, with vector 0 with p10_opposite w_obj with short_name "east" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object w_obj "" Compass class K3_direction with i7_kind K3_direction with K3_Link u_obj, with name 'w//' 'west' 'wall', door_dir w_to, with vector 0 with p10_opposite e_obj with short_name "west" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object u_obj "" Compass class K3_direction with i7_kind K3_direction with K3_Link d_obj, with name 'u//' 'up', door_dir u_to, with vector 0 with p10_opposite d_obj with short_name "up" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object d_obj "" Compass class K3_direction with i7_kind K3_direction with K3_Link in_obj, with name 'd//' 'down', door_dir d_to, with vector 0 with p10_opposite u_obj with short_name "down" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object in_obj "" Compass class K3_direction with i7_kind K3_direction with K3_Link out_obj, with name 'in//' 'inside', door_dir in_to, with vector 0 with p10_opposite out_obj with short_name "inside" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object out_obj "" Compass class K3_direction with i7_kind K3_direction with K3_Link nothing, with name 'out//' 'outside', door_dir out_to, with vector 0 with p10_opposite in_obj with short_name "outside" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object selfobj "" class K27_player_character with i7_kind K27_player_character with K27_Link nothing, with K8_Link O97_engineers, with K2_Link O93_cell_phone, with name 'yourself' 'yourselfs//p' with vector 0 has concealed with short_name "yourself" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O92_office "" class K1_room with i7_kind K1_room with K1_Link O95_southern_cube_farm, with name 'office' 'offices//p' with vector 0 has proper with n_to O99_vending with e_to O95_southern_cube_farm with I7_Map_Region O116_tenth_floor with description SC_2 with short_name "Office" with list_together 0, ; Object -> O93_cell_phone "" class K2_thing with i7_kind K2_thing with K2_Link O94_non_working_cell_phone, with name 'cell' 'phone' with vector 0 has proper with short_name "cell phone" with I7_cap_short_name "Cell phone" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O94_non_working_cell_phone "" class K2_thing with i7_kind K2_thing with K2_Link O97_engineers, with name 'non-working' 'cell-phone' with vector 0 has proper with short_name "non-working cell-phone" with I7_cap_short_name "Non-working cell-phone" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O95_southern_cube_farm "" class K1_room with i7_kind K1_room with K1_Link O96_ten_southern_stairwell, with name 'southern' 'cube' 'farm' 'farms//p' with vector 0 has proper with n_to O113_elevators with e_to O96_ten_southern_stairwell with w_to O92_office with I7_Map_Region O116_tenth_floor with description text_routine_0 with short_name "Southern Cube Farm" with list_together 0, ; Object -> O97_engineers "" class K8_person with i7_kind K8_person with K8_Link O121_stan, with K2_Link O100_vending_machine, with name 'engineers' 'engineerses//p' with vector 0 has proper with short_name "Engineers" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O96_ten_southern_stairwell "" class K1_room with i7_kind K1_room with K1_Link O99_vending, with name 'ten' 'southern' 'stairwell' 'stairwells//p' with vector 0 has proper with n_to O107_eastern_hallway with w_to O95_southern_cube_farm with u_to O117_south_roof with d_to O123_southern_stairwell_nine with I7_Map_Region O116_tenth_floor with description SC_3 with short_name "Ten Southern Stairwell" with list_together 0, ; Object O99_vending "" class K1_room with i7_kind K1_room with K1_Link O104_ten_northern_stairwell, with name 'vending' 'vendings//p' with vector 0 has proper with n_to O104_ten_northern_stairwell with s_to O92_office with e_to O113_elevators with I7_Map_Region O116_tenth_floor with description SC_4 with short_name "Vending" with list_together 0, ; Object -> O100_vending_machine "" class K5_container with i7_kind K5_container with K5_Link O108_first_aid_kit, with K2_Link O101_candy, with name 'vending' 'machine' 'machines//p' with vector 0 has proper has static with short_name "Vending Machine" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object -> -> O101_candy "" class K2_thing with i7_kind K2_thing with K2_Link O102_chips, with name 'candy' with vector 0 has proper has edible with short_name "candy" with I7_cap_short_name "Candy" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object -> -> O102_chips "" class K2_thing with i7_kind K2_thing with K2_Link O103_pop, with name 'chips' with vector 0 has proper has edible with short_name "chips" with I7_cap_short_name "Chips" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object -> -> O103_pop "" class K2_thing with i7_kind K2_thing with K2_Link O108_first_aid_kit, with name 'pop' with vector 0 has proper with short_name "pop" with I7_cap_short_name "Pop" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O104_ten_northern_stairwell "" class K1_room with i7_kind K1_room with K1_Link O105_northern_cube_farm, with name 'ten' 'northern' 'stairwell' 'stairwells//p' with vector 0 has proper with s_to O99_vending with e_to O105_northern_cube_farm with u_to O118_north_roof with d_to O120_northern_stairwell_nine with I7_Map_Region O116_tenth_floor with description SC_5 with short_name "Ten Northern Stairwell" with list_together 0, ; Object O105_northern_cube_farm "" class K1_room with i7_kind K1_room with K1_Link O106_first_aid_room, with name 'northern' 'cube' 'farm' 'farms//p' with vector 0 has proper with s_to O113_elevators with e_to O106_first_aid_room with w_to O104_ten_northern_stairwell with I7_Map_Region O116_tenth_floor with description SC_6 with short_name "Northern Cube Farm" with list_together 0, ; Object O106_first_aid_room "" class K1_room with i7_kind K1_room with K1_Link O107_eastern_hallway, with name 'first' 'aid' 'room' 'rooms//p' with vector 0 has proper with s_to O107_eastern_hallway with w_to O105_northern_cube_farm with I7_Map_Region O116_tenth_floor with short_name "First Aid Room" with list_together 0, with description [; rfalse; ], ; Object -> O108_first_aid_kit "" class K5_container with i7_kind K5_container with K5_Link nothing, with K2_Link O109_bandages, with name 'first' 'aid' 'kit' 'kits//p' with vector 0 has proper with short_name "First Aid Kit" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object -> -> O109_bandages "" class K2_thing with i7_kind K2_thing with K2_Link O110_sniffing_salts, with name 'bandages' with vector 0 has proper with short_name "Bandages" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object -> -> O110_sniffing_salts "" class K2_thing with i7_kind K2_thing with K2_Link O111_stim, with name 'sniffing' 'salts' with vector 0 has proper with short_name "Sniffing Salts" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object -> -> O111_stim "" class K2_thing with i7_kind K2_thing with K2_Link O112_pain_reliever, with name 'stim' with vector 0 has proper with short_name "Stim" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object -> -> O112_pain_reliever "" class K2_thing with i7_kind K2_thing with K2_Link O114_fire_axe, with name 'pain' 'reliever' with vector 0 has proper has edible with short_name "Pain Reliever" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O107_eastern_hallway "" class K1_room with i7_kind K1_room with K1_Link O113_elevators, with name 'eastern' 'hallway' 'hallways//p' with vector 0 has proper with n_to O106_first_aid_room with s_to O96_ten_southern_stairwell with w_to O113_elevators with I7_Map_Region O116_tenth_floor with description SC_7 with short_name "Eastern Hallway" with list_together 0, ; Object -> O114_fire_axe "" class K2_thing with i7_kind K2_thing with K2_Link O115_fire_extinguisher, with name 'fire' 'axe' with vector 0 has proper has p63_heavy with short_name "Fire Axe" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object -> O115_fire_extinguisher "" class K2_thing with i7_kind K2_thing with K2_Link O121_stan, with name 'fire' 'extinguisher' with vector 0 has proper has p63_heavy with short_name "Fire Extinguisher" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O113_elevators "" class K1_room with i7_kind K1_room with K1_Link O117_south_roof, with name 'elevators' 'elevatorses//p' with vector 0 has proper with n_to O105_northern_cube_farm with s_to O95_southern_cube_farm with e_to O107_eastern_hallway with w_to O99_vending with I7_Map_Region O116_tenth_floor with description SC_8 with short_name "Elevators" with list_together 0, ; Object O116_tenth_floor "" class K9_region with i7_kind K9_region with K9_Link O119_roof_top, with name 'tenth' 'floor' 'floors//p' with vector 0 with regional_found_in [; if (I7_In(location, O116_tenth_floor)) rtrue; ], with short_name "Tenth Floor" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O117_south_roof "" class K1_room with i7_kind K1_room with K1_Link O118_north_roof, with name 'south' 'roof' 'roofs//p' with vector 0 has proper with n_to O118_north_roof with d_to O96_ten_southern_stairwell with I7_Map_Region O119_roof_top with description SC_9 with short_name "South Roof" with list_together 0, ; Object O118_north_roof "" class K1_room with i7_kind K1_room with K1_Link O120_northern_stairwell_nine, with name 'north' 'roof' 'roofs//p' with vector 0 has proper with s_to O117_south_roof with d_to O104_ten_northern_stairwell with I7_Map_Region O119_roof_top with description SC_10 with short_name "North Roof" with list_together 0, ; Object O119_roof_top "" class K9_region with i7_kind K9_region with K9_Link O126_ninth_floor, with name 'roof' 'top' 'tops//p' with vector 0 with regional_found_in [; if (I7_In(location, O119_roof_top)) rtrue; ], has proper with short_name "Roof Top" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O120_northern_stairwell_nine "" class K1_room with i7_kind K1_room with K1_Link O123_southern_stairwell_nine, with name 'northern' 'stairwell' 'nine' 'nines//p' with vector 0 has proper with s_to O125_nine_main with u_to O104_ten_northern_stairwell with d_to O127_northern_stairwell_eigh with I7_Map_Region O126_ninth_floor with description SC_11 with short_name "Northern Stairwell Nine" with list_together 0, ; Object O123_southern_stairwell_nine "" class K1_room with i7_kind K1_room with K1_Link O125_nine_main, with name 'southern' 'stairwell' 'nine' 'nines//p' with vector 0 has proper with n_to O125_nine_main with u_to O96_ten_southern_stairwell with d_to O128_southern_stairwell_eigh with I7_Map_Region O126_ninth_floor with description text_routine_1 with short_name "Southern Stairwell Nine" with list_together 0, ; Object -> O121_stan "" class K8_person with i7_kind K8_person with K8_Link nothing, with K2_Link O122_access_card, with name 'stan' 'stans//p' with vector 0 has proper has p55_unconscious has p57_bleeding has p59_pained with short_name "Stan" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object -> -> O122_access_card "" class K2_thing with i7_kind K2_thing with K2_Link O132_power_switch, with name 'access' 'card' with vector 0 with short_name "Access Card" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O125_nine_main "" class K1_room with i7_kind K1_room with K1_Link O127_northern_stairwell_eigh, with name 'nine' 'main' 'mains//p' with vector 0 has proper with n_to O120_northern_stairwell_nine with s_to O123_southern_stairwell_nine with I7_Map_Region O126_ninth_floor with description SC_12 with short_name "Nine Main" with list_together 0, ; Object O126_ninth_floor "" class K9_region with i7_kind K9_region with K9_Link O133_eighth_floor, with name 'ninth' 'floor' 'floors//p' with vector 0 with regional_found_in [; if (I7_In(location, O126_ninth_floor)) rtrue; ], has proper with short_name "Ninth Floor" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O127_northern_stairwell_eigh "" class K1_room with i7_kind K1_room with K1_Link O128_southern_stairwell_eigh, with name 'northern' 'stairwell' 'eight' 'eights//p' with vector 0 has proper with s_to O130_security_door_8a with u_to O120_northern_stairwell_nine with d_to O134_northern_stairwell_seve with I7_Map_Region O133_eighth_floor with description SC_13 with short_name "Northern Stairwell Eight" with list_together 0, ; Object O128_southern_stairwell_eigh "" class K1_room with i7_kind K1_room with K1_Link O129_utility_room, with name 'southern' 'stairwell' 'eight' 'eights//p' with vector 0 has proper with n_to O131_security_door_8b with u_to O123_southern_stairwell_nine with d_to O135_southern_stairwell_seve with I7_Map_Region O133_eighth_floor with description SC_14 with short_name "Southern Stairwell Eight" with list_together 0, ; Object O129_utility_room "" class K1_room with i7_kind K1_room with K1_Link O134_northern_stairwell_seve, with name 'utility' 'room' 'rooms//p' with vector 0 has proper with n_to O130_security_door_8a with s_to O131_security_door_8b with I7_Map_Region O133_eighth_floor with description SC_15 with short_name "Utility Room" with list_together 0, ; Object -> O132_power_switch "" class K11_device with i7_kind K11_device with K11_Link nothing, with K2_Link O130_security_door_8a, with name 'power' 'switch' 'switchs//p' with vector 0 has proper with description SC_16 has on with short_name "Power switch" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O130_security_door_8a "" class K4_door with i7_kind K4_door with K4_Link O131_security_door_8b, with K2_Link O131_security_door_8b, with name 'security' 'door' '8a' '8as//p' with vector 0 with with_key O122_access_card has lockable has locked with short_name "security door 8a" with list_together 0, with found_in O127_northern_stairwell_eigh O129_utility_room, with door_dir [; if (location == O127_northern_stairwell_eigh) return s_to; return n_to; ], with door_to [; if (location == O127_northern_stairwell_eigh) return O129_utility_room; return O127_northern_stairwell_eigh; ], with action_bitmap 0 0 0 0 0 0 ; Object O131_security_door_8b "" class K4_door with i7_kind K4_door with K4_Link nothing, with K2_Link nothing, with name 'security' 'door' '8b' '8bs//p' with vector 0 with with_key O122_access_card has lockable has locked with short_name "security door 8b" with list_together 0, with found_in O129_utility_room O128_southern_stairwell_eigh, with door_dir [; if (location == O129_utility_room) return s_to; return n_to; ], with door_to [; if (location == O129_utility_room) return O128_southern_stairwell_eigh; return O129_utility_room; ], with action_bitmap 0 0 0 0 0 0 ; Object O133_eighth_floor "" class K9_region with i7_kind K9_region with K9_Link O136_seventh_floor, with name 'eighth' 'floor' 'floors//p' with vector 0 with regional_found_in [; if (I7_In(location, O133_eighth_floor)) rtrue; ], has proper with short_name "Eighth Floor" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O134_northern_stairwell_seve "" class K1_room with i7_kind K1_room with K1_Link O135_southern_stairwell_seve, with name 'northern' 'stairwell' 'seven' 'sevens//p' with vector 0 has proper with u_to O127_northern_stairwell_eigh with d_to O137_northern_stairwell_six with I7_Map_Region O136_seventh_floor with description SC_17 with short_name "Northern Stairwell Seven" with list_together 0, ; Object O135_southern_stairwell_seve "" class K1_room with i7_kind K1_room with K1_Link O137_northern_stairwell_six, with name 'southern' 'stairwell' 'seven' 'sevens//p' with vector 0 has proper with u_to O128_southern_stairwell_eigh with d_to O138_southern_stairwell_six with I7_Map_Region O136_seventh_floor with description SC_17 with short_name "Southern Stairwell Seven" with list_together 0, ; Object O136_seventh_floor "" class K9_region with i7_kind K9_region with K9_Link O139_sixth_floor, with name 'seventh' 'floor' 'floors//p' with vector 0 with regional_found_in [; if (I7_In(location, O136_seventh_floor)) rtrue; ], has proper with short_name "Seventh Floor" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O137_northern_stairwell_six "" class K1_room with i7_kind K1_room with K1_Link O138_southern_stairwell_six, with name 'northern' 'stairwell' 'six' 'sixes//p' with vector 0 has proper with u_to O134_northern_stairwell_seve with d_to O140_northern_stairwell_five with I7_Map_Region O139_sixth_floor with description SC_17 with short_name "Northern Stairwell Six" with list_together 0, ; Object O138_southern_stairwell_six "" class K1_room with i7_kind K1_room with K1_Link O140_northern_stairwell_five, with name 'southern' 'stairwell' 'six' 'sixes//p' with vector 0 has proper with u_to O135_southern_stairwell_seve with d_to O141_southern_stairwell_five with I7_Map_Region O139_sixth_floor with description SC_17 with short_name "Southern Stairwell Six" with list_together 0, ; Object O139_sixth_floor "" class K9_region with i7_kind K9_region with K9_Link O142_fifth_floor, with name 'sixth' 'floor' 'floors//p' with vector 0 with regional_found_in [; if (I7_In(location, O139_sixth_floor)) rtrue; ], has proper with short_name "Sixth Floor" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O140_northern_stairwell_five "" class K1_room with i7_kind K1_room with K1_Link O141_southern_stairwell_five, with name 'northern' 'stairwell' 'five' 'fives//p' with vector 0 has proper with u_to O137_northern_stairwell_six with d_to O143_northern_stairwell_four with I7_Map_Region O142_fifth_floor with description SC_17 with short_name "Northern Stairwell Five" with list_together 0, ; Object O141_southern_stairwell_five "" class K1_room with i7_kind K1_room with K1_Link O143_northern_stairwell_four, with name 'southern' 'stairwell' 'five' 'fives//p' with vector 0 has proper with u_to O138_southern_stairwell_six with d_to O144_southern_stairwell_four with I7_Map_Region O142_fifth_floor with description SC_17 with short_name "Southern Stairwell Five" with list_together 0, ; Object O142_fifth_floor "" class K9_region with i7_kind K9_region with K9_Link O145_fourth_floor, with name 'fifth' 'floor' 'floors//p' with vector 0 with regional_found_in [; if (I7_In(location, O142_fifth_floor)) rtrue; ], has proper with short_name "Fifth Floor" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O143_northern_stairwell_four "" class K1_room with i7_kind K1_room with K1_Link O144_southern_stairwell_four, with name 'northern' 'stairwell' 'four' 'fours//p' with vector 0 has proper with u_to O140_northern_stairwell_five with d_to O146_northern_stairwell_thre with I7_Map_Region O145_fourth_floor with description SC_17 with short_name "Northern Stairwell Four" with list_together 0, ; Object O144_southern_stairwell_four "" class K1_room with i7_kind K1_room with K1_Link O146_northern_stairwell_thre, with name 'southern' 'stairwell' 'four' 'fours//p' with vector 0 has proper with u_to O141_southern_stairwell_five with d_to O147_southern_stairwell_thre with I7_Map_Region O145_fourth_floor with description SC_17 with short_name "Southern Stairwell Four" with list_together 0, ; Object O145_fourth_floor "" class K9_region with i7_kind K9_region with K9_Link O148_third_floor, with name 'fourth' 'floor' 'floors//p' with vector 0 with regional_found_in [; if (I7_In(location, O145_fourth_floor)) rtrue; ], has proper with short_name "Fourth Floor" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O146_northern_stairwell_thre "" class K1_room with i7_kind K1_room with K1_Link O147_southern_stairwell_thre, with name 'northern' 'stairwell' 'three' 'threes//p' with vector 0 has proper with u_to O143_northern_stairwell_four with d_to O149_northern_stairwell_two with I7_Map_Region O148_third_floor with description SC_17 with short_name "Northern Stairwell Three" with list_together 0, ; Object O147_southern_stairwell_thre "" class K1_room with i7_kind K1_room with K1_Link O149_northern_stairwell_two, with name 'southern' 'stairwell' 'three' 'threes//p' with vector 0 has proper with u_to O144_southern_stairwell_four with d_to O150_southern_stairwell_two with I7_Map_Region O148_third_floor with description SC_17 with short_name "Southern Stairwell Three" with list_together 0, ; Object O148_third_floor "" class K9_region with i7_kind K9_region with K9_Link O151_second_floor, with name 'third' 'floor' 'floors//p' with vector 0 with regional_found_in [; if (I7_In(location, O148_third_floor)) rtrue; ], has proper with short_name "Third Floor" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O149_northern_stairwell_two "" class K1_room with i7_kind K1_room with K1_Link O150_southern_stairwell_two, with name 'northern' 'stairwell' 'two' 'twos//p' with vector 0 has proper with u_to O146_northern_stairwell_thre with d_to O152_northern_stairwell_one with I7_Map_Region O151_second_floor with description SC_17 with short_name "Northern Stairwell Two" with list_together 0, ; Object O150_southern_stairwell_two "" class K1_room with i7_kind K1_room with K1_Link O152_northern_stairwell_one, with name 'southern' 'stairwell' 'two' 'twos//p' with vector 0 has proper with u_to O147_southern_stairwell_thre with d_to O153_southern_stairwell_one with I7_Map_Region O151_second_floor with description SC_17 with short_name "Southern Stairwell Two" with list_together 0, ; Object O151_second_floor "" class K9_region with i7_kind K9_region with K9_Link O157_first_floor, with name 'second' 'floor' 'floors//p' with vector 0 with regional_found_in [; if (I7_In(location, O151_second_floor)) rtrue; ], has proper with short_name "Second Floor" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O152_northern_stairwell_one "" class K1_room with i7_kind K1_room with K1_Link O153_southern_stairwell_one, with name 'northern' 'stairwell' 'one' 'ones//p' with vector 0 has proper with u_to O149_northern_stairwell_two with d_to O158_northern_stairwell_base with out_to O155_outside_building_north with I7_Map_Region O157_first_floor with description SC_18 with short_name "Northern Stairwell One" with list_together 0, ; Object O153_southern_stairwell_one "" class K1_room with i7_kind K1_room with K1_Link O154_outside_building_south, with name 'southern' 'stairwell' 'one' 'ones//p' with vector 0 has proper with u_to O150_southern_stairwell_two with d_to O159_southern_stairwell_base with out_to O154_outside_building_south with I7_Map_Region O157_first_floor with description SC_19 with short_name "Southern Stairwell One" with list_together 0, ; Object O154_outside_building_south "" class K1_room with i7_kind K1_room with K1_Link O155_outside_building_north, with name 'outside' 'building' 'south' 'souths//p' with vector 0 has proper with in_to O153_southern_stairwell_one with I7_Map_Region O157_first_floor with short_name "Outside Building South" with list_together 0, with description [; rfalse; ], ; Object O155_outside_building_north "" class K1_room with i7_kind K1_room with K1_Link O158_northern_stairwell_base, with name 'outside' 'building' 'north' 'norths//p' with vector 0 has proper with in_to O152_northern_stairwell_one with I7_Map_Region O157_first_floor with short_name "Outside Building North" with list_together 0, with description [; rfalse; ], ; Object O157_first_floor "" class K9_region with i7_kind K9_region with K9_Link O160_basement_floor, with name 'first' 'floor' 'floors//p' with vector 0 with regional_found_in [; if (I7_In(location, O157_first_floor)) rtrue; ], has proper with short_name "First Floor" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O158_northern_stairwell_base "" class K1_room with i7_kind K1_room with K1_Link O159_southern_stairwell_base, with name 'northern' 'stairwell' 'basement' 'basements//p' with vector 0 has proper with u_to O152_northern_stairwell_one with d_to O161_northern_stairwell_lab with I7_Map_Region O160_basement_floor with description SC_17 with short_name "Northern Stairwell Basement" with list_together 0, ; Object O159_southern_stairwell_base "" class K1_room with i7_kind K1_room with K1_Link O161_northern_stairwell_lab, with name 'southern' 'stairwell' 'basement' 'basements//p' with vector 0 has proper with u_to O153_southern_stairwell_one with d_to O162_southern_stairwell_lab with I7_Map_Region O160_basement_floor with description SC_17 with short_name "Southern Stairwell Basement" with list_together 0, ; Object O160_basement_floor "" class K9_region with i7_kind K9_region with K9_Link O163_under_ground_lab, with name 'basement' 'floor' 'floors//p' with vector 0 with regional_found_in [; if (I7_In(location, O160_basement_floor)) rtrue; ], has proper with short_name "Basement Floor" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Object O161_northern_stairwell_lab "" class K1_room with i7_kind K1_room with K1_Link O162_southern_stairwell_lab, with name 'northern' 'stairwell' 'lab' 'labs//p' with vector 0 has proper with u_to O158_northern_stairwell_base with I7_Map_Region O163_under_ground_lab with description SC_17 with short_name "Northern Stairwell Lab" with list_together 0, ; Object O162_southern_stairwell_lab "" class K1_room with i7_kind K1_room with K1_Link nothing, with name 'southern' 'stairwell' 'lab' 'labs//p' with vector 0 has proper with u_to O159_southern_stairwell_base with I7_Map_Region O163_under_ground_lab with description SC_17 with short_name "Southern Stairwell Lab" with list_together 0, ; Object O163_under_ground_lab "" class K9_region with i7_kind K9_region with K9_Link nothing, with name 'under' 'ground' 'lab' 'labs//p' with vector 0 with regional_found_in [; if (I7_In(location, O163_under_ground_lab)) rtrue; ], has proper with short_name "Under Ground Lab" with list_together 0, with action_bitmap 0 0 0 0 0 0 ; Constant K0_First = n_obj; Constant K1_First = O92_office; Constant K2_First = selfobj; Constant K3_First = n_obj; Constant K4_First = O130_security_door_8a; Constant K5_First = O100_vending_machine; Constant K6_First = nothing; Constant K7_First = nothing; Constant K8_First = selfobj; Constant K9_First = O116_tenth_floor; Constant K10_First = nothing; Constant K11_First = O132_power_switch; Constant K24_First = nothing; Constant K25_First = nothing; Constant K26_First = nothing; Constant K27_First = selfobj; Constant K30_First = nothing; ! --- Property metadata --- Array property_metadata --> "map region" K1_room I6_NULL "description" K1_room K2_thing I6_NULL "printed name" K1_room K2_thing I6_NULL "initial appearance" K2_thing I6_NULL "printed plural name" K2_thing I6_NULL "inventory listing" K2_thing I6_NULL "indefinite article" K2_thing I6_NULL "matching key" K2_thing I6_NULL "other side" K4_door I6_NULL "carrying capacity" K5_container K6_supporter K8_person I6_NULL "opposite" K3_direction I6_NULL "inform property" K3_direction I6_NULL "inform object" K3_direction I6_NULL "lighted" K1_room K1_room K2_thing I6_NULL "visited" K1_room I6_NULL "enterable" K2_thing I6_NULL "lit" K2_thing K1_room K2_thing I6_NULL "edible" K2_thing I6_NULL "transparent" I6_NULL "undescribed" I6_NULL "scenery" K2_thing I6_NULL "fixed in place" K2_thing I6_NULL "wearable" K2_thing I6_NULL "handled" K2_thing I6_NULL "pushable between rooms" K2_thing I6_NULL "an inform library door" K2_thing I6_NULL "an inform library container" K2_thing I6_NULL "an inform library supporter" K2_thing I6_NULL "inform library switchable" K2_thing I6_NULL "an inform library animate object" K2_thing I6_NULL "an inform library male" K2_thing I6_NULL "marked for listing" K2_thing I6_NULL "mentioned" K2_thing I6_NULL "initially carried" K2_thing I6_NULL "open" K4_door K5_container I6_NULL "openable" K4_door K5_container I6_NULL "lockable" K4_door K5_container I6_NULL "locked" K4_door K5_container I6_NULL "switched on" K11_device I6_NULL "female" K8_person I6_NULL "neuter" K8_person I6_NULL "unconscious" K8_person I6_NULL "bleeding" K8_person I6_NULL "pained" K8_person I6_NULL "hyper" K8_person I6_NULL "heavy" K2_thing I6_NULL "broken" K2_thing I6_NULL "burning" K1_room I6_NULL "specification" I6_NULL "score for visiting" I6_NULL "score" I6_NULL "worn" I6_NULL ; Array attribute_offsets --> (50 + 73); #IFDEF TARGET_ZCODE; Array property_offsets --> (100 + 73); #IFNOT; ! TARGET_ZCODE Array property_offsets --> (100 + 73 + INDIV_PROP_START - 48); #ENDIF; ! TARGET_ZCODE [ CreatePropertyOffsets i; for (i=0: i<123: i++) attribute_offsets-->i = -1; for (i=0: i<173: i++) property_offsets-->i = -1; attribute_offsets-->light = 43; attribute_offsets-->visited = 48; attribute_offsets-->enterable = 51; attribute_offsets-->light = 54; attribute_offsets-->edible = 59; attribute_offsets-->transparent = 62; attribute_offsets-->concealed = 64; attribute_offsets-->scenery = 66; attribute_offsets-->static = 69; attribute_offsets-->clothing = 72; attribute_offsets-->moved = 75; attribute_offsets-->pushable = 78; attribute_offsets-->door = 81; attribute_offsets-->container = 84; attribute_offsets-->supporter = 87; attribute_offsets-->switchable = 90; attribute_offsets-->animate = 93; attribute_offsets-->male = 96; attribute_offsets-->workflag = 99; attribute_offsets-->I7_mentioned = 102; attribute_offsets-->initially_carried = 105; attribute_offsets-->open = 108; attribute_offsets-->openable = 112; attribute_offsets-->lockable = 116; attribute_offsets-->locked = 120; attribute_offsets-->on = 124; attribute_offsets-->female = 127; attribute_offsets-->neuter = 130; attribute_offsets-->p55_unconscious = 133; attribute_offsets-->p57_bleeding = 136; attribute_offsets-->p59_pained = 139; attribute_offsets-->p61_hyper = 142; attribute_offsets-->p63_heavy = 145; attribute_offsets-->p65_broken = 148; attribute_offsets-->p67_burning = 151; property_offsets-->I7_Map_Region = 0; property_offsets-->description = 3; property_offsets-->short_name = 7; property_offsets-->initial = 11; property_offsets-->plural = 14; property_offsets-->invent = 17; property_offsets-->article = 20; property_offsets-->with_key = 23; property_offsets-->door_to = 26; property_offsets-->capacity = 29; property_offsets-->p10_opposite = 34; property_offsets-->p11_inform_property = 37; property_offsets-->p12_inform_object = 40; property_offsets-->p69_specification = 154; property_offsets-->score = 156; property_offsets-->score = 158; property_offsets-->worn = 160; ]; Array T0_rankings table tab_0_0 tab_0_1; Array tab_0_0 table 16484 (0) (10) (15) (20) (30) (40) (45) (55) ; Array tab_0_1 table 101 (SC_20) (SC_21) (SC_22) (SC_23) (SC_24) (SC_25) (SC_26) (SC_27) ; [ PrintTableName T; switch(T) { T0_rankings: print "Table 1 - Rankings"; return; default: print "** No such table **"; } ]; Array TestText_0 string "take all / call 911 with cell phone / e / tell engineers to leave building / n / w / take all / eat chips / drink pop / n / e / e/ take all/ s / take all / s / up / down / use bandages / use stim / use sniffing salts / eat pain reliever"; Array TestReq_0 --> 0 0; Array TestText_1 string "actions / take all / call 911 with cell phone / e / tell engineers to leave building / n / w / take all / n / e / e/ take all/ s / take all / s / up / down / down / use bandages/ use sniffing salts /use pain reliever/ d /"; Array TestReq_1 --> 0 0; Array TestText_2 string "unlock 8b with card/ open 8b/ n / turn off switch"; Array TestReq_2 --> 0 0; Array TestText_3 string "hit axe against switch"; Array TestReq_3 --> 0 0; Array TestText_4 string "wait/wait/wait/wait/wait/wait/wait/wait/wait/wait"; Array TestReq_4 --> 0 0; Array TestText_5 string "n/n/n/d / d/ d/ d/ d/ d/ d/ u / u/ outside"; Array TestReq_5 --> 0 0; Global parameter_object; ! : [ R_0 t_0 ! Call parameter 'it' = I6_OBJECT_SPEC_TY ; rfalse; ]; ! : [ R_1 t_0 ! Call parameter 'it' = I6_OBJECT_SPEC_TY ; rfalse; ]; ! : [ R_2 t_0 ! Call parameter 'it' = I6_OBJECT_SPEC_TY ; rfalse; ]; ! : [ R_3 t_0 ! Call parameter 'it' = I6_OBJECT_SPEC_TY ; rfalse; ]; ! : [ R_4 t_0 ! Call parameter 'it' = I6_OBJECT_SPEC_TY ; rfalse; ]; ! : [ R_5 t_0 ! Call parameter 'it' = I6_OBJECT_SPEC_TY ; rfalse; ]; ! : [ R_6 t_0 ! Call parameter 'it' = I6_OBJECT_SPEC_TY ; rfalse; ]; ! : [ R_7 t_0 ! Call parameter 'it' = I6_OBJECT_SPEC_TY ; rfalse; ]; ! : [ R_8 t_0 ! Call parameter 'it' = I6_OBJECT_SPEC_TY ; rfalse; ]; ! first when play begins rule : [ R_9 ; ! [1: consider the scene changing rules]^"; #endif; ProcessRulebook(30); rfalse; ]; ! first turn sequence rule : [ R_10 ; ! [1: consider the scene changing rules]^"; #endif; ProcessRulebook(30); ! [2: consider the every turn rules]^"; #endif; ProcessRulebook(24); ! [3: consider the timed events rule]^"; #endif; ProcessRulebook(ProcessI7Timers); rfalse; ]; ! last turn sequence rule : [ R_11 ; ! [1: consider the scene changing rules]^"; #endif; ProcessRulebook(30); ! [2: consider the adjust light rule]^"; #endif; ProcessRulebook(TS5_R); ! [3: consider the note object acquisitions rule]^"; #endif; ProcessRulebook(TS6_R); rfalse; ]; ! last scene changing rule : [ R_12 ; ! [1: run scene change machinery]^"; #endif; I7_SceneChange(); rfalse; ]; ! first accessibility rule : [ R_13 ; ! [1: abide by the access to scoped objects rule]^"; #endif; if (ProcessRulebook(OIU_Scoped)) rtrue; rfalse; ]; ! last accessibility rule : [ R_14 ; ! [1: abide by the access through barriers rule]^"; #endif; if (ProcessRulebook(OIU_Barrier)) rtrue; rfalse; ]; ! last reaching inside rule : [ R_15 ; ! [1: abide by the can't reach inside rooms rule]^"; #endif; if (ProcessRulebook(OIUB_RI)) rtrue; ! [2: abide by the can't reach inside closed containers rule]^"; #endif; if (ProcessRulebook(OIUB_CCI)) rtrue; rfalse; ]; ! last reaching outside rule : [ R_16 ; ! [1: abide by the can't reach outside closed containers rule]^"; #endif; if (ProcessRulebook(OIUB_CCO)) rtrue; rfalse; ]; ! last visibility rule : [ R_17 ; ! [1: abide by the can't act in the dark rule]^"; #endif; if (ProcessRulebook(CSITDR)) rtrue; rfalse; ]; ! last general before rule : [ R_18 ; ! [1: abide by i6 gamepreroutine]^"; #endif; if (GamePreRoutine()~=0) rtrue; rfalse; ]; ! last actor-specific before rule : [ R_19 ; ! [1: abide by i6 orders property]^"; #endif; if (RunRoutines(player,orders)~=0) rtrue; rfalse; ]; ! last location-specific before rule : [ R_20 ; ! [1: abide by i6 location before]^"; #endif; if (location~=0 && RunRoutines(location,before)~=0) rtrue; rfalse; ]; ! last reaction before rule : [ R_21 ; ! [1: abide by i6 react_before property]^"; #endif; scope_reason=REACT_BEFORE_REASON; parser_one=0;SearchScope(ScopeCeiling(player),player,0); scope_reason=PARSING_REASON; if (parser_one~=0) rtrue; rfalse; ]; ! last object-specific before rule : [ R_22 ; ! [1: abide by i6 object before]^"; #endif; if (inp1>1 && RunRoutines(inp1,before)~=0) rtrue; rfalse; ]; ! first general after rule : [ R_23 ; ! [1: abide by i6 gamepostroutine]^"; #endif; if (GamePostRoutine()~=0) rtrue; rfalse; ]; ! first location-specific after rule : [ R_24 ; ! [1: abide by i6 location after]^"; #endif; if (location~=0 && RunRoutines(location,after)~=0) rtrue; rfalse; ]; ! first reaction after rule : [ R_25 ; ! [1: abide by i6 react_after property]^"; #endif; scope_reason=REACT_AFTER_REASON; parser_one=0;SearchScope(ScopeCeiling(player),player,0); scope_reason=PARSING_REASON; if (parser_one~=0) rtrue; rfalse; ]; ! first object-specific after rule : [ R_26 ; ! [1: abide by i6 object after]^"; #endif; if (inp1>1 && RunRoutines(inp1,after)~=0) rtrue; rfalse; ]; ! first action-processing rule : [ R_27 ; ! [1: abide by the before rules]^"; #endif; if (ProcessRulebook(1)) rtrue; rfalse; ]; ! last action-processing rule : [ R_28 ; ! [1: abide by the basic accessibility rule]^"; #endif; if (ProcessRulebook(PA_R)) rtrue; ! [2: abide by the carrying requirements rule]^"; #endif; if (ProcessRulebook(CR_R)) rtrue; ! [3: abide by the instead rules]^"; #endif; if (ProcessRulebook(2)) rtrue; ! [4: abide by the non-player character action rule]^"; #endif; if (ProcessRulebook(I7_NPCA)) rtrue; ! [5: abide by the action-specific rules]^"; #endif; if (ProcessRulebook(6)) rtrue; ! [6: rule succeeds]^"; #endif; RulebookSucceeds(); rtrue; rfalse; ]; ! last before rule : [ R_29 ; ! [1: abide by the general before rules]^"; #endif; if (ProcessRulebook(12)) rtrue; ! [2: abide by the actor-specific before rules]^"; #endif; if (ProcessRulebook(13)) rtrue; ! [3: abide by the location-specific before rules]^"; #endif; if (ProcessRulebook(14)) rtrue; ! [4: abide by the reaction before rules]^"; #endif; if (ProcessRulebook(15)) rtrue; ! [5: abide by the object-specific before rules]^"; #endif; if (ProcessRulebook(16)) rtrue; rfalse; ]; ! last action-specific rule : [ R_30 ; ! [1: cause the action to take place]^"; #endif; _I6_ActionPrimitive(); rtrue; rfalse; ]; ! first after rule : [ R_31 ; ! [1: abide by the object-specific after rules]^"; #endif; if (ProcessRulebook(21)) rtrue; ! [2: abide by the reaction after rules]^"; #endif; if (ProcessRulebook(20)) rtrue; ! [3: abide by the location-specific after rules]^"; #endif; if (ProcessRulebook(19)) rtrue; ! [4: abide by the actor-specific after rules]^"; #endif; if (ProcessRulebook(18)) rtrue; ! [5: abide by the general after rules]^"; #endif; if (ProcessRulebook(17)) rtrue; rfalse; ]; ! last for printing the name rule : [ R_32 ; ! [1: cause the description to take place]^"; #endif; I6_PSN__(parameter_object); rfalse; ]; ! last for listing contents rule : [ R_33 ; ! [1: cause the listing to take place]^"; #endif; I7_WLF(child(parameter_object), 0); rfalse; ]; ! last for printing the player's obituary rule : [ R_34 ; ! [1: abide by the print obituary headline rule]^"; #endif; if (ProcessRulebook(OBIT_HEAD)) rtrue; ! [2: abide by the print final score rule]^"; #endif; if (ProcessRulebook(OBIT_FINAL)) rtrue; ! [3: abide by the display final status line rule]^"; #endif; if (ProcessRulebook(OBIT_DISP)) rtrue; rfalse; ]; ! printing the name of a thing : [ R_35 t_0 ! Local variable e.g. 'XXXX' = OBJECT_TY ; if ((t_0 = parameter_object, ((parameter_object ofclass K2_thing)))) { if (debug_rules) DB_Rule(R_35); ! [1: now xxxx is mentioned]^"; #endif; give t_0 I7_mentioned; } else { if (debug_rules > 1) DB_Rule(R_35,1); } rfalse; ]; ! supplying a missing noun : [ R_36 ; if (((((action ==##Smell) && (actor==player))))) { ! [1: change the noun to the location]^"; #endif; noun = real_location; RulebookSucceeds(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_36,1); } rfalse; ]; ! supplying a missing noun : [ R_37 ; if (((((action ==##Listen) && (actor==player))))) { ! [1: change the noun to the location]^"; #endif; noun = real_location; RulebookSucceeds(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_37,1); } rfalse; ]; ! supplying a missing noun : [ R_38 ; if (((((action ==##Go) && (actor==player))))) { ! [1: say ~You'll have to say which compass direction to go in.~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_28; new_line; .L0; RulebookSucceeds(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_38,1); } rfalse; ]; ! say contents of token-0 : [ R_198 t_0 ! Call parameter 'O' = OBJECT_TY ; ! [1: list the contents of o , as a sentence]^"; #endif; I7WriteListFrom(child(t_0), 8); rfalse; ]; ! say the contents of token-0 : [ R_199 t_0 ! Call parameter 'O' = OBJECT_TY ; ! [1: list the contents of o , as a sentence , using the definite article]^"; #endif; I7WriteListFrom(child(t_0), 264); rfalse; ]; ! play begins : [ R_308 ; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~Just another day at the office on the top floor of the Acme Building. Being an engineer is such a drag, maybe I should just leave early and go golfing.... Suddenly the building shakes wildly, windows break, monitors fall, and people are screaming!!! ... must be an earthquake. The lights are flickering and the computer screens are flashing.~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_29; new_line; .L1; rfalse; ]; ! calling : [ R_309 ; if (actor == player) { if (debug_rules) DB_Rule(R_309); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: if the noun is not cell phone , say ~Can only call with a phone.~ instead]^"; #endif; if (~~((noun == O93_cell_phone))) { say__c=0; say__p=1; print (I7_string) SC_30; new_line; .L2; rtrue; } } else { if (debug_rules > 1) DB_Rule(R_309,1); } rfalse; ]; ! out calling : [ R_310 ; if (actor == player) { if (debug_rules) DB_Rule(R_310); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~Using the phone you call 911. The operator picks up and says 'What is your loc-' and the connection is lost. Oh well, at least now they know there is a problem at the Acme Building.~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_31; new_line; .L3; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: award 5 points]^"; #endif; score=score+5; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [3: remove cell phone from play]^"; #endif; I7_Remove(O93_cell_phone); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [4: now the player carries non-working cell-phone]^"; #endif; I7_Move(O94_non_working_cell_phone,player); } else { if (debug_rules > 1) DB_Rule(R_310,1); } rfalse; ]; ! of asking engineers about : [ R_311 ; if ((action ==##Ask) && (actor==player) && (noun == O97_engineers)) { if (debug_rules) DB_Rule(R_311); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: move engineers to outside building south]^"; #endif; I7_Move(O97_engineers, O154_outside_building_south, 0, 0); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: say ~The engineers leave via the stairwell. You are a good man, you just saved the lives of your fellow engineers!~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_32; new_line; .L4; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [3: award 5 points]^"; #endif; score=score+5; RulebookFails(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_311,1); } rfalse; ]; ! of drinking pop : [ R_312 ; if ((action ==##Drink) && (actor==player) && (noun == O103_pop)) { if (debug_rules) DB_Rule(R_312); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~You drink the pop. It is very refreshing.~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_33; new_line; .L5; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: remove pop from play]^"; #endif; I7_Remove(O103_pop); RulebookFails(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_312,1); } rfalse; ]; ! of feeding pain reliever : [ R_313 ; if ((action ==##A81_feeding) && (actor==player) && (noun == O112_pain_reliever)) { if (debug_rules) DB_Rule(R_313); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~You feed the pain reliever to [second noun]. [if second noun is not yourself][second noun] looks much better[otherwise]You feel fine[end if].~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_34; print (name) second; print (I7_string) SC_35; .L6; if ((~~((second == selfobj)))) say__c=true; else jump L7; print (name) second; print (I7_string) SC_36; .L7; if (say__c==false) say__c=true; else jump L8; print (I7_string) SC_37; .L8; say__c = false; print (I7_string) SC_38; new_line; .L9; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: if second noun is pained , award 5 points]^"; #endif; if ((second has p59_pained)) { score=score+5; } #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [3: if second noun is pained , now second noun is normal]^"; #endif; if ((second has p59_pained)) { give second ~p59_pained; } RulebookFails(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_313,1); } rfalse; ]; ! of using sniffing salts : [ R_314 ; if ((action ==##A82_using) && (actor==player) && (noun == O110_sniffing_salts)) { if (debug_rules) DB_Rule(R_314); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~You break the sniffing salts and put the sniffing salts up to [second noun][apostrophe]s nose. Their nose recoils and their body snakes[if second noun is unconscious], but they are now awake.[otherwise].~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_39; print (name) second; print "'"; print (I7_string) SC_40; .L10; if (((second has p55_unconscious))) say__c=true; else jump L11; print (I7_string) SC_41; new_line; .L11; if (say__c==false) say__c=true; else jump L12; print (I7_string) SC_38; new_line; .L12; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: remove sniffing salts from play]^"; #endif; I7_Remove(O110_sniffing_salts); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [3: if second noun is unconscious , award 10 points]^"; #endif; if ((second has p55_unconscious)) { score=score+10; } #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [4: if second noun is unconscious , now second noun is awake]^"; #endif; if ((second has p55_unconscious)) { give second ~p55_unconscious; } RulebookFails(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_314,1); } rfalse; ]; ! of using stim : [ R_315 ; if ((action ==##A82_using) && (actor==player) && (noun == O111_stim)) { if (debug_rules) DB_Rule(R_315); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~You jab [second noun] with the Stim. [second noun] is ready for anything.~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_42; print (name) second; print (I7_string) SC_43; print (name) second; print (I7_string) SC_44; new_line; .L13; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: remove stim from play]^"; #endif; I7_Remove(O111_stim); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [3: now second noun is hyper]^"; #endif; give second p61_hyper; RulebookFails(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_315,1); } rfalse; ]; ! of using bandages : [ R_316 ; if ((action ==##A82_using) && (actor==player) && (noun == O109_bandages)) { if (debug_rules) DB_Rule(R_316); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~[if second noun is fine][second noun] is not hurt, don't waste the bandages they could save someone's life.[otherwise]You apply the bandage to [second noun][apostrophe]s wound. It stops the bleeding.[end if]~]^"; #endif; say__c=0; say__p=1; .L14; if (((second hasnt p57_bleeding))) say__c=true; else jump L15; print (name) second; print (I7_string) SC_45; new_line; .L15; if (say__c==false) say__c=true; else jump L16; print (I7_string) SC_46; print (name) second; print "'"; print (I7_string) SC_47; new_line; .L16; say__c = false; .L17; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: if second noun is bleeding , award 10 points]^"; #endif; if ((second has p57_bleeding)) { score=score+10; } #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [3: if second noun is bleeding , remove bandages from play]^"; #endif; if ((second has p57_bleeding)) { I7_Remove(O109_bandages); } #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [4: if second noun is bleeding , now second noun is fine]^"; #endif; if ((second has p57_bleeding)) { give second ~p57_bleeding; } RulebookFails(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_316,1); } rfalse; ]; ! rule : [ R_317 ; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: ignore the can't take people's possessions rule]^"; #endif; SuppressRule(OIUB_AP); rfalse; ]; ! of examining someone : [ R_318 ; if ((action ==##Examine) && (actor==player) && (noun ofclass K8_person)) { if (debug_rules) DB_Rule(R_318); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~[the noun] is carrying [the list of things carried by the noun].~]^"; #endif; say__c=0; say__p=1; print (the) noun; print (I7_string) SC_48; @push say__c; objectloop (say__c ofclass Object) if (((say__c ofclass K2_thing) && (noun == I7_CarriedBy(say__c)))) give say__c i7listflag; else give say__c ~i7listflag; I7List(DEFART_BIT); @pull say__c; print (I7_string) SC_38; new_line; .L18; RulebookFails(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_318,1); } rfalse; ]; ! saving stan ends : [ R_319 ; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~Stan says: '[italic type]Thanks for helping an old guy out. I was on my way to the utility room to shut off the power to prevent electrical fires. [if Stan is carrying Access Card]Here is my key, c[Otherwise]C[end if]an ya take care of it? I'm in no condition.[roman type]'~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_49; style underline; print (I7_string) SC_50; .L19; if (((O121_stan == I7_CarriedBy(O122_access_card)))) say__c=true; else jump L20; print (I7_string) SC_51; .L20; if (say__c==false) say__c=true; else jump L21; print (I7_string) SC_52; .L21; say__c = false; print (I7_string) SC_53; new_line; style roman; print (I7_string) SC_54; .L22; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: now player carries the access card]^"; #endif; I7_Move(O122_access_card,player); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [3: stan leaves in 10 turns from now]^"; #endif; SetI7Timer(R_320, 10+1, 0); rfalse; ]; ! stan leaves : [ R_320 ; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: move stan to outside building south]^"; #endif; I7_Move(O121_stan, O154_outside_building_south, 0, 0); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: change description of southern stairwell nine to ~ ~]^"; #endif; WriteAccessProp(O123_southern_stairwell_nine,description,SC_55); rfalse; ]; ! of unpowering : [ R_321 ; if ((action ==##A83_unpowering) && (actor==player)) { if (debug_rules) DB_Rule(R_321); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~Power switch is jammed, I need to use something heavy to move it.~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_56; new_line; .L23; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: fire warning in 10 turns from now]^"; #endif; SetI7Timer(R_325, 10+1, 0); RulebookFails(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_321,1); } rfalse; ]; ! of switching on power switch : [ R_322 ; if ((action ==##SwitchOn) && (actor==player) && (noun == O132_power_switch)) { if (debug_rules) DB_Rule(R_322); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: if power switch is broken , say ~Power switch is broken.~]^"; #endif; if ((O132_power_switch has p65_broken)) { say__c=0; say__p=1; print (I7_string) SC_57; new_line; .L24; } RulebookFails(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_322,1); } rfalse; ]; ! of using extinguisher : [ R_323 ; if ((action ==##A82_using) && (actor==player) && (noun == O115_fire_extinguisher)) { if (debug_rules) DB_Rule(R_323); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~You aim the Fire Extinguisher at the base of the fire and squeeze the trigger. Foam comes rocketing out and puts out the fire in seconds.~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_58; new_line; .L25; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: now utility room is cool]^"; #endif; give O129_utility_room ~p67_burning; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [3: award 5 points]^"; #endif; score=score+5; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [4: now power switch is broken]^"; #endif; give O132_power_switch p65_broken; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [5: now power switch is switched off]^"; #endif; give O132_power_switch ~on; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [6: change description of utility room to ~Now a charred mess. The stairs are to the North and South.~]^"; #endif; WriteAccessProp(O129_utility_room,description,SC_59); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [7: building burns down in 999 turns from now]^"; #endif; SetI7Timer(R_328, 999+1, 0); RulebookFails(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_323,1); } rfalse; ]; ! of crushing : [ R_324 ; if ((action ==##A84_crushing) && (actor==player)) { if (debug_rules) DB_Rule(R_324); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~You slam the [noun] on to the [second noun], crushing the [second noun]. The power is now fully off and the emergency lighting is fully engaged.~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_60; print (name) noun; print (I7_string) SC_61; print (name) second; print (I7_string) SC_62; print (name) second; print (I7_string) SC_63; new_line; .L26; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: award 15 points]^"; #endif; score=score+15; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [3: now power switch is broken]^"; #endif; give O132_power_switch p65_broken; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [4: now power switch is switched off]^"; #endif; give O132_power_switch ~on; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [5: change description of utility room to ~The utility room is a mess. Stairs are to the North and South.~]^"; #endif; WriteAccessProp(O129_utility_room,description,SC_64); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [6: change description of power switch to ~Broken power switch~]^"; #endif; WriteAccessProp(O132_power_switch,description,SC_65); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [7: fire warning in 999 turns from now]^"; #endif; SetI7Timer(R_325, 999+1, 0); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [8: fire starts in 999 turns from now]^"; #endif; SetI7Timer(R_326, 999+1, 0); RulebookFails(); rtrue; } else { if (debug_rules > 1) DB_Rule(R_324,1); } rfalse; ]; ! fire warning : [ R_325 ; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: if power switch is working , say ~Sparks are flying all over. If the power isn't turned off soon something will catch on fire.~]^"; #endif; if ((O132_power_switch hasnt p65_broken)) { say__c=0; say__p=1; print (I7_string) SC_66; new_line; .L27; } #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: if power switch is working , fire starts in 10 turns from now]^"; #endif; if ((O132_power_switch hasnt p65_broken)) { SetI7Timer(R_326, 10+1, 0); } rfalse; ]; ! fire starts : [ R_326 ; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~Sparks ignite greasy rags!!! Put this fire out or the whole building is going to burn.~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_67; new_line; .L28; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: now utility room is burning]^"; #endif; give O129_utility_room p67_burning; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [3: change description of utility room to ~A fire is blazing!!~]^"; #endif; WriteAccessProp(O129_utility_room,description,SC_68); #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [4: now power switch is broken]^"; #endif; give O132_power_switch p65_broken; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [5: building burning warning in 10 turns from now]^"; #endif; SetI7Timer(R_327, 10+1, 0); rfalse; ]; ! building burning warning : [ R_327 ; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: if utility room is burning , say ~The smoke is starting to get worse. You better get out or put out the fire soon.~]^"; #endif; if ((O129_utility_room has p67_burning)) { say__c=0; say__p=1; print (I7_string) SC_69; new_line; .L29; } #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: if utility room is burning , building burns down in 10 turns from now]^"; #endif; if ((O129_utility_room has p67_burning)) { SetI7Timer(R_328, 10+1, 0); } rfalse; ]; ! building burns down : [ R_328 ; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: if utility room is burning , say ~The fire is out of control. Your lungs burn, you are losing consciousness...~]^"; #endif; if ((O129_utility_room has p67_burning)) { say__c=0; say__p=1; print (I7_string) SC_70; new_line; .L30; } #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: if utility room is burning , end the game in death]^"; #endif; if ((O129_utility_room has p67_burning)) { deadflag=1; } rfalse; ]; ! final ending ends : [ R_329 ; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [1: say ~You finally made it out. Suddenly you feel another tremor, the building is shaking, you run as fast as you can as the building begins to fall. You just barely make it.~]^"; #endif; say__c=0; say__p=1; print (I7_string) SC_71; new_line; .L31; #ifndef I7_ECONOMY; if (debug_rules>1) print "@31 [2: award 5 points]^"; #endif; score=score+5; ! [3: end the game in victory]^"; #endif; deadflag=2; rfalse; ]; Array I7TimerTable table 0 0 0 0 0 0 0 0 0 0 0 0; Array I7TimerTableTimes table 0 0 0 0 0 0 0 0 0 0 0 0; [ TurnEndPrimitive; actor = player; act_requester = 0; BeginActionProcessing(); ProcessRulebook(TURNEND_RB); EndActionProcessing(); ]; [ BeforeRoutines x; self = noun; ChronologyPoint(); rfalse; ]; [ AfterRoutines; self = noun; if (ProcessRulebook(AFTER_RB)) rtrue; if (keep_silent == 1) rtrue; return ProcessRulebook(REPLY_RB); ]; Array EMPTY_RULEBOOK -> $ff $ff $ff $ff; ! 4 bytes needed in case of Glulx Array rulebooks_array --> B0_action_processing B1_before B2_instead B3_after B4_procedural B5_accessibility B6_action_specific B7_carry_out B8_general_report B9_turn_sequence B10_reaching_inside B11_reaching_outside B12_general_before B13_actor_specific_before B14_location_specific_before B15_reaction_before B16_object_specific_before B17_general_after B18_actor_specific_after B19_location_specific_after B20_reaction_after B21_object_specific_after B22_when_play_begins B23_when_play_ends B24_every_turn B25_check B26_report B27_persuasion B28_unsuccessful_attempt_by B29_visibility B30_scene_changing B31_before_printing_the_name B32_for_printing_the_name B33_after_printing_the_name B34_before_listing_contents B35_for_listing_contents B36_after_listing_contents B37_before_grouping_together B38_for_grouping_together B39_after_grouping_together B40_before_constructing_the_ B41_for_constructing_the_sta B42_after_constructing_the_s B43_before_listing_nondescri B44_for_listing_nondescript_ B45_after_listing_nondescrip B46_before_deciding_the_scop B47_for_deciding_the_scope B48_after_deciding_the_scope B49_before_supplying_a_missi B50_for_supplying_a_missing_ B51_after_supplying_a_missin B52_before_supplying_a_missi B53_for_supplying_a_missing_ B54_after_supplying_a_missin B55_before_reading_a_command B56_for_reading_a_command B57_after_reading_a_command B58_before_deciding_whether_ B59_for_deciding_whether_all B60_after_deciding_whether_a B61_before_printing_the_play B62_for_printing_the_player_ B63_after_printing_the_playe B64_before_amusing_a_victori B65_for_amusing_a_victorious B66_after_amusing_a_victorio B67_before_printing_the_bann B68_for_printing_the_banner_ B69_after_printing_the_banne B70_before_printing_the_plur B71_for_printing_the_plural_ B72_after_printing_the_plura B73_before_deciding_the_conc B74_for_deciding_the_conceal B75_after_deciding_the_conce B76_before_printing_a_refusa B77_for_printing_a_refusal_t B78_after_printing_a_refusal B79_before_printing_the_anno B80_for_printing_the_announc B81_after_printing_the_annou B82_before_printing_the_name B83_for_printing_the_name_of B84_after_printing_the_name_ B85_before_printing_the_desc B86_for_printing_the_descrip B87_after_printing_the_descr B88_before_printing_room_des B89_for_printing_room_descri B90_after_printing_room_desc B91_before_printing_a_parser B92_for_printing_a_parser_er B93_after_printing_a_parser_ B94_before_implicitly_taking B95_for_implicitly_taking B96_after_implicitly_taking B97_before_starting_the_virt B98_for_starting_the_virtual B99_after_starting_the_virtu B100_before_writing_a_paragr B101_for_writing_a_paragraph B102_after_writing_a_paragra B103_check_taking_inventory B104_carry_out_taking_invent B105_report_taking_inventory B106_check_taking B107_carry_out_taking B108_report_taking B109_check_removing_it_from B110_carry_out_removing_it_f B111_report_removing_it_from B112_check_dropping B113_carry_out_dropping B114_report_dropping B115_check_putting_it_on B116_carry_out_putting_it_on B117_report_putting_it_on B118_check_inserting_it_into B119_carry_out_inserting_it_ B120_report_inserting_it_int B121_check_waiting B122_carry_out_waiting B123_report_waiting B124_check_going B125_carry_out_going B126_report_going B127_check_entering B128_carry_out_entering B129_report_entering B130_check_exiting B131_carry_out_exiting B132_report_exiting B133_check_getting_off B134_carry_out_getting_off B135_report_getting_off B136_check_looking B137_carry_out_looking B138_report_looking B139_check_examining B140_carry_out_examining B141_report_examining B142_check_looking_under B143_carry_out_looking_under B144_report_looking_under B145_check_searching B146_carry_out_searching B147_report_searching B148_check_consulting_it_abo B149_carry_out_consulting_it B150_report_consulting_it_ab B151_check_locking_it_with B152_carry_out_locking_it_wi B153_report_locking_it_with B154_check_unlocking_it_with B155_carry_out_unlocking_it_ B156_report_unlocking_it_wit B157_check_switching_on B158_carry_out_switching_on B159_report_switching_on B160_check_switching_off B161_carry_out_switching_off B162_report_switching_off B163_check_opening B164_carry_out_opening B165_report_opening B166_check_closing B167_carry_out_closing B168_report_closing B169_check_wearing B170_carry_out_wearing B171_report_wearing B172_check_taking_off B173_carry_out_taking_off B174_report_taking_off B175_check_eating B176_carry_out_eating B177_report_eating B178_check_giving_it_to B179_carry_out_giving_it_to B180_report_giving_it_to B181_check_showing_it_to B182_carry_out_showing_it_to B183_report_showing_it_to B184_check_waking B185_carry_out_waking B186_report_waking B187_check_throwing_it_at B188_carry_out_throwing_it_a B189_report_throwing_it_at B190_check_attacking B191_carry_out_attacking B192_report_attacking B193_check_kissing B194_carry_out_kissing B195_report_kissing B196_check_answering_it_that B197_carry_out_answering_it_ B198_report_answering_it_tha B199_check_telling_it_about B200_carry_out_telling_it_ab B201_report_telling_it_about B202_check_asking_it_about B203_carry_out_asking_it_abo B204_report_asking_it_about B205_check_asking_it_for B206_carry_out_asking_it_for B207_report_asking_it_for B208_check_touching B209_carry_out_touching B210_report_touching B211_check_waving B212_carry_out_waving B213_report_waving B214_check_pulling B215_carry_out_pulling B216_report_pulling B217_check_pushing B218_carry_out_pushing B219_report_pushing B220_check_turning B221_carry_out_turning B222_report_turning B223_check_pushing_it_to B224_carry_out_pushing_it_to B225_report_pushing_it_to B226_check_squeezing B227_carry_out_squeezing B228_report_squeezing B229_check_saying_yes B230_carry_out_saying_yes B231_report_saying_yes B232_check_saying_no B233_carry_out_saying_no B234_report_saying_no B235_check_burning B236_carry_out_burning B237_report_burning B238_check_waking_up B239_carry_out_waking_up B240_report_waking_up B241_check_thinking B242_carry_out_thinking B243_report_thinking B244_check_smelling B245_carry_out_smelling B246_report_smelling B247_check_listening_to B248_carry_out_listening_to B249_report_listening_to B250_check_tasting B251_carry_out_tasting B252_report_tasting B253_check_cutting B254_carry_out_cutting B255_report_cutting B256_check_jumping B257_carry_out_jumping B258_report_jumping B259_check_tying_it_to B260_carry_out_tying_it_to B261_report_tying_it_to B262_check_drinking B263_carry_out_drinking B264_report_drinking B265_check_saying_sorry B266_carry_out_saying_sorry B267_report_saying_sorry B268_check_swearing_obscenel B269_carry_out_swearing_obsc B270_report_swearing_obscene B271_check_swearing_mildly B272_carry_out_swearing_mild B273_report_swearing_mildly B274_check_swinging B275_carry_out_swinging B276_report_swinging B277_check_rubbing B278_carry_out_rubbing B279_report_rubbing B280_check_setting_it_to B281_carry_out_setting_it_to B282_report_setting_it_to B283_check_waving_hands B284_carry_out_waving_hands B285_report_waving_hands B286_check_buying B287_carry_out_buying B288_report_buying B289_check_singing B290_carry_out_singing B291_report_singing B292_check_climbing B293_carry_out_climbing B294_report_climbing B295_check_sleeping B296_carry_out_sleeping B297_report_sleeping B298_check_requesting_the_sc B299_carry_out_requesting_th B300_report_requesting_the_s B301_check_quitting_the_game B302_carry_out_quitting_the_ B303_report_quitting_the_gam B304_check_saving_the_game B305_carry_out_saving_the_ga B306_report_saving_the_game B307_check_restoring_the_gam B308_carry_out_restoring_the B309_report_restoring_the_ga B310_check_restarting_the_ga B311_carry_out_restarting_th B312_report_restarting_the_g B313_check_verifying_the_sto B314_carry_out_verifying_the B315_report_verifying_the_st B316_check_requesting_the_st B317_carry_out_requesting_th B318_report_requesting_the_s B319_check_switching_the_sto B320_carry_out_switching_the B321_report_switching_the_st B322_check_switching_the_sto B323_carry_out_switching_the B324_report_switching_the_st B325_check_preferring_abbrev B326_carry_out_preferring_ab B327_report_preferring_abbre B328_check_preferring_unabbr B329_carry_out_preferring_un B330_report_preferring_unabb B331_check_preferring_someti B332_carry_out_preferring_so B333_report_preferring_somet B334_check_requesting_the_pr B335_carry_out_requesting_th B336_report_requesting_the_p B337_check_switching_score_n B338_carry_out_switching_sco B339_report_switching_score_ B340_check_switching_score_n B341_carry_out_switching_sco B342_report_switching_score_ B343_check_calling B344_carry_out_calling B345_report_calling B346_when_cube_farm_1_panic_ B347_when_cube_farm_1_panic_ B348_check_feeding B349_carry_out_feeding B350_report_feeding B351_check_using B352_carry_out_using B353_report_using B354_when_saving_stan_begins B355_when_saving_stan_ends B356_check_unpowering B357_carry_out_unpowering B358_report_unpowering B359_check_crushing B360_carry_out_crushing B361_report_crushing B362_when_final_ending_begin B363_when_final_ending_ends 0; Array B0_action_processing --> R_27 R_28 I6_NULL; Array B1_before --> R_29 I6_NULL; Array B2_instead --> R_311 R_312 R_313 R_322 R_316 R_323 R_314 R_315 R_318 R_324 R_321 I6_NULL; Array B3_after --> R_31 I6_NULL; Array B4_procedural --> R_317 I6_NULL; Array B5_accessibility --> R_13 R_14 I6_NULL; Array B6_action_specific --> R_30 I6_NULL; Constant B7_carry_out = EMPTY_RULEBOOK; Constant B8_general_report = EMPTY_RULEBOOK; Array B9_turn_sequence --> R_10 TS1_R TS2_R TS3_R TS4_R R_11 I6_NULL; Array B10_reaching_inside --> R_15 I6_NULL; Array B11_reaching_outside --> R_16 I6_NULL; Array B12_general_before --> R_18 I6_NULL; Array B13_actor_specific_before --> R_19 I6_NULL; Array B14_location_specific_before --> R_20 I6_NULL; Array B15_reaction_before --> R_21 I6_NULL; Array B16_object_specific_before --> R_22 I6_NULL; Array B17_general_after --> R_23 I6_NULL; Constant B18_actor_specific_after = EMPTY_RULEBOOK; Array B19_location_specific_after --> R_24 I6_NULL; Array B20_reaction_after --> R_25 I6_NULL; Array B21_object_specific_after --> R_26 I6_NULL; Array B22_when_play_begins --> R_9 R_308 I6_NULL; Constant B23_when_play_ends = EMPTY_RULEBOOK; Constant B24_every_turn = EMPTY_RULEBOOK; Constant B25_check = EMPTY_RULEBOOK; Constant B26_report = EMPTY_RULEBOOK; Constant B27_persuasion = EMPTY_RULEBOOK; Constant B28_unsuccessful_attempt_by = EMPTY_RULEBOOK; Array B29_visibility --> R_17 I6_NULL; Array B30_scene_changing --> R_12 I6_NULL; Array B31_before_printing_the_name --> R_35 I6_NULL; Array B32_for_printing_the_name --> R_32 I6_NULL; Constant B33_after_printing_the_name = EMPTY_RULEBOOK; Constant B34_before_listing_contents = EMPTY_RULEBOOK; Array B35_for_listing_contents --> R_33 I6_NULL; Constant B36_after_listing_contents = EMPTY_RULEBOOK; Constant B37_before_grouping_together = EMPTY_RULEBOOK; Constant B38_for_grouping_together = EMPTY_RULEBOOK; Constant B39_after_grouping_together = EMPTY_RULEBOOK; Constant B40_before_constructing_the_ = EMPTY_RULEBOOK; Constant B41_for_constructing_the_sta = EMPTY_RULEBOOK; Constant B42_after_constructing_the_s = EMPTY_RULEBOOK; Constant B43_before_listing_nondescri = EMPTY_RULEBOOK; Constant B44_for_listing_nondescript_ = EMPTY_RULEBOOK; Constant B45_after_listing_nondescrip = EMPTY_RULEBOOK; Constant B46_before_deciding_the_scop = EMPTY_RULEBOOK; Constant B47_for_deciding_the_scope = EMPTY_RULEBOOK; Constant B48_after_deciding_the_scope = EMPTY_RULEBOOK; Constant B49_before_supplying_a_missi = EMPTY_RULEBOOK; Array B50_for_supplying_a_missing_ --> R_36 R_37 R_38 I6_NULL; Constant B51_after_supplying_a_missin = EMPTY_RULEBOOK; Constant B52_before_supplying_a_missi = EMPTY_RULEBOOK; Constant B53_for_supplying_a_missing_ = EMPTY_RULEBOOK; Constant B54_after_supplying_a_missin = EMPTY_RULEBOOK; Constant B55_before_reading_a_command = EMPTY_RULEBOOK; Constant B56_for_reading_a_command = EMPTY_RULEBOOK; Constant B57_after_reading_a_command = EMPTY_RULEBOOK; Constant B58_before_deciding_whether_ = EMPTY_RULEBOOK; Constant B59_for_deciding_whether_all = EMPTY_RULEBOOK; Constant B60_after_deciding_whether_a = EMPTY_RULEBOOK; Constant B61_before_printing_the_play = EMPTY_RULEBOOK; Array B62_for_printing_the_player_ --> R_34 I6_NULL; Constant B63_after_printing_the_playe = EMPTY_RULEBOOK; Constant B64_before_amusing_a_victori = EMPTY_RULEBOOK; Constant B65_for_amusing_a_victorious = EMPTY_RULEBOOK; Constant B66_after_amusing_a_victorio = EMPTY_RULEBOOK; Constant B67_before_printing_the_bann = EMPTY_RULEBOOK; Constant B68_for_printing_the_banner_ = EMPTY_RULEBOOK; Constant B69_after_printing_the_banne = EMPTY_RULEBOOK; Constant B70_before_printing_the_plur = EMPTY_RULEBOOK; Constant B71_for_printing_the_plural_ = EMPTY_RULEBOOK; Constant B72_after_printing_the_plura = EMPTY_RULEBOOK; Constant B73_before_deciding_the_conc = EMPTY_RULEBOOK; Constant B74_for_deciding_the_conceal = EMPTY_RULEBOOK; Constant B75_after_deciding_the_conce = EMPTY_RULEBOOK; Constant B76_before_printing_a_refusa = EMPTY_RULEBOOK; Constant B77_for_printing_a_refusal_t = EMPTY_RULEBOOK; Constant B78_after_printing_a_refusal = EMPTY_RULEBOOK; Constant B79_before_printing_the_anno = EMPTY_RULEBOOK; Constant B80_for_printing_the_announc = EMPTY_RULEBOOK; Constant B81_after_printing_the_annou = EMPTY_RULEBOOK; Constant B82_before_printing_the_name = EMPTY_RULEBOOK; Constant B83_for_printing_the_name_of = EMPTY_RULEBOOK; Constant B84_after_printing_the_name_ = EMPTY_RULEBOOK; Constant B85_before_printing_the_desc = EMPTY_RULEBOOK; Constant B86_for_printing_the_descrip = EMPTY_RULEBOOK; Constant B87_after_printing_the_descr = EMPTY_RULEBOOK; Constant B88_before_printing_room_des = EMPTY_RULEBOOK; Constant B89_for_printing_room_descri = EMPTY_RULEBOOK; Constant B90_after_printing_room_desc = EMPTY_RULEBOOK; Constant B91_before_printing_a_parser = EMPTY_RULEBOOK; Constant B92_for_printing_a_parser_er = EMPTY_RULEBOOK; Constant B93_after_printing_a_parser_ = EMPTY_RULEBOOK; Constant B94_before_implicitly_taking = EMPTY_RULEBOOK; Constant B95_for_implicitly_taking = EMPTY_RULEBOOK; Constant B96_after_implicitly_taking = EMPTY_RULEBOOK; Constant B97_before_starting_the_virt = EMPTY_RULEBOOK; Constant B98_for_starting_the_virtual = EMPTY_RULEBOOK; Constant B99_after_starting_the_virtu = EMPTY_RULEBOOK; Constant B100_before_writing_a_paragr = EMPTY_RULEBOOK; Constant B101_for_writing_a_paragraph = EMPTY_RULEBOOK; Constant B102_after_writing_a_paragra = EMPTY_RULEBOOK; Constant B103_check_taking_inventory = EMPTY_RULEBOOK; Array B104_carry_out_taking_invent --> InvSub_O1 InvSub_O2 InvSub_O3 InvSub_O4 I6_NULL; Array B105_report_taking_inventory --> InvSub_R1 I6_NULL; Array B106_check_taking --> TakeSub_C1 TakeSub_C2 TakeSub_C3 OIUB_CP TakeSub_C4 OIUB_AP TakeSub_C6 TakeSub_C7 TakeSub_C8 TakeSub_C9 TakeSub_C10 TakeSub_C11 TakeSub_C12 I6_NULL; Array B107_carry_out_taking --> TakeSub_O1 TakeSub_O2 I6_NULL; Array B108_report_taking --> TakeSub_R1 TakeSub_R2 I6_NULL; Array B109_check_removing_it_from --> OIUB_CP RemoveSub_C1 RemoveSub_C2 RemoveSub_C3 RemoveSub_C4 TakeSub_C2 TakeSub_C3 TakeSub_C4 OIUB_AP TakeSub_C6 TakeSub_C7 TakeSub_C8 TakeSub_C9 TakeSub_C10 TakeSub_C11 TakeSub_C12 I6_NULL; Array B110_carry_out_removing_it_f --> TakeSub_O1 RemoveSub_O2 I6_NULL; Array B111_report_removing_it_from --> RemoveSub_R1 I6_NULL; Array B112_check_dropping --> DropSub_C1 DropSub_C2 DropSub_C3 DropSub_C4 DropSub_C5 I6_NULL; Array B113_carry_out_dropping --> DropSub_O1 I6_NULL; Array B114_report_dropping --> DropSub_R1 I6_NULL; Array B115_check_putting_it_on --> PutOnSub_C1 PutOnSub_C2 PutOnSub_C3 PutOnSub_C4 PutOnSub_C5 PutOnSub_C6 PutOnSub_C7 PutOnSub_C8 I6_NULL; Array B116_carry_out_putting_it_on --> PutOnSub_O1 PutOnSub_O2 I6_NULL; Array B117_report_putting_it_on --> PutOnSub_R1 I6_NULL; Array B118_check_inserting_it_into --> InsertSub_C1 InsertSub_C2 InsertSub_C3 OIUB_CP InsertSub_C4 InsertSub_C5 InsertSub_C6 InsertSub_C7 InsertSub_C8 I6_NULL; Array B119_carry_out_inserting_it_ --> InsertSub_O1 InsertSub_O2 I6_NULL; Array B120_report_inserting_it_int --> InsertSub_R1 I6_NULL; Constant B121_check_waiting = EMPTY_RULEBOOK; Constant B122_carry_out_waiting = EMPTY_RULEBOOK; Array B123_report_waiting --> WaitSub_R1 I6_NULL; Array B124_check_going --> GoSub_C1 GoSub_C2 GoSub_C3 GoSub_C4 GoSub_C5 GoSub_C6 GoSub_C7 GoSub_C8 GoSub_C9 GoSub_C10 GoSub_C11 I6_NULL; Array B125_carry_out_going --> GoSub_O1 GoSub_O2 GoSub_O3 I6_NULL; Array B126_report_going --> GoSub_R1 I6_NULL; Array B127_check_entering --> EnterSub_C1 EnterSub_C2 EnterSub_C3 EnterSub_C4 EnterSub_C5 EnterSub_C6 EnterSub_C7 EnterSub_C8 I6_NULL; Array B128_carry_out_entering --> EnterSub_O1 I6_NULL; Array B129_report_entering --> EnterSub_R1 EnterSub_R2 I6_NULL; Array B130_check_exiting --> ExitSub_C1 ExitSub_C2 ExitSub_C3 I6_NULL; Array B131_carry_out_exiting --> ExitSub_O1 I6_NULL; Array B132_report_exiting --> ExitSub_R1 ExitSub_R2 I6_NULL; Array B133_check_getting_off --> GetOffSub_C1 GetOffSub_C2 I6_NULL; Constant B134_carry_out_getting_off = EMPTY_RULEBOOK; Constant B135_report_getting_off = EMPTY_RULEBOOK; Constant B136_check_looking = EMPTY_RULEBOOK; Array B137_carry_out_looking --> LookSub_O1 LookSub_O2 LookSub_O3 LookSub_O4 LookSub_O5 LookSub_O6 I6_NULL; Array B138_report_looking --> LookSub_R1 I6_NULL; Constant B139_check_examining = EMPTY_RULEBOOK; Array B140_carry_out_examining --> ExamineSub_O1 ExamineSub_O2 ExamineSub_O3 ExamineSub_O4 ExamineSub_O5 I6_NULL; Array B141_report_examining --> ExamineSub_R1 I6_NULL; Constant B142_check_looking_under = EMPTY_RULEBOOK; Array B143_carry_out_looking_under --> LookUnderSub_O1 I6_NULL; Array B144_report_looking_under --> LookUnderSub_R1 I6_NULL; Array B145_check_searching --> SearchSub_C1 SearchSub_C2 I6_NULL; Array B146_carry_out_searching --> SearchSub_O1 I6_NULL; Array B147_report_searching --> SearchSub_R1 SearchSub_R2 SearchSub_R3 I6_NULL; Constant B148_check_consulting_it_abo = EMPTY_RULEBOOK; Constant B149_carry_out_consulting_it = EMPTY_RULEBOOK; Array B150_report_consulting_it_ab --> ConsultSub_C1 I6_NULL; Array B151_check_locking_it_with --> LockSub_C1 LockSub_C2 LockSub_C3 LockSub_C4 I6_NULL; Array B152_carry_out_locking_it_wi --> LockSub_O1 I6_NULL; Array B153_report_locking_it_with --> LockSub_R1 I6_NULL; Array B154_check_unlocking_it_with --> UnlockSub_C1 UnlockSub_C2 UnlockSub_C3 I6_NULL; Array B155_carry_out_unlocking_it_ --> UnlockSub_O1 I6_NULL; Array B156_report_unlocking_it_wit --> UnlockSub_R1 I6_NULL; Array B157_check_switching_on --> SwitchOnSub_C1 SwitchOnSub_C2 I6_NULL; Array B158_carry_out_switching_on --> SwitchOnSub_O1 I6_NULL; Array B159_report_switching_on --> SwitchOnSub_R1 I6_NULL; Array B160_check_switching_off --> SwitchOffSub_C1 SwitchOffSub_C2 I6_NULL; Array B161_carry_out_switching_off --> SwitchOffSub_O1 I6_NULL; Array B162_report_switching_off --> SwitchOffSub_R1 I6_NULL; Array B163_check_opening --> OpenSub_C1 OpenSub_C2 OpenSub_C3 I6_NULL; Array B164_carry_out_opening --> OpenSub_O1 I6_NULL; Array B165_report_opening --> OpenSub_R1 OpenSub_R2 I6_NULL; Array B166_check_closing --> CloseSub_C1 CloseSub_C2 I6_NULL; Array B167_carry_out_closing --> CloseSub_O1 I6_NULL; Array B168_report_closing --> CloseSub_R1 I6_NULL; Array B169_check_wearing --> WearSub_C1 WearSub_C2 WearSub_C3 I6_NULL; Array B170_carry_out_wearing --> WearSub_O1 I6_NULL; Array B171_report_wearing --> WearSub_R1 I6_NULL; Array B172_check_taking_off --> DisrobeSub_C1 I6_NULL; Array B173_carry_out_taking_off --> DisrobeSub_O1 I6_NULL; Array B174_report_taking_off --> DisrobeSub_R1 I6_NULL; Array B175_check_eating --> EatSub_C1 EatSub_C2 I6_NULL; Array B176_carry_out_eating --> EatSub_O1 I6_NULL; Array B177_report_eating --> EatSub_R1 I6_NULL; Array B178_check_giving_it_to --> GiveSub_C1 GiveSub_C2 GiveSub_C3 GiveSub_C4 GiveSub_C5 I6_NULL; Array B179_carry_out_giving_it_to --> GiveSub_O1 I6_NULL; Array B180_report_giving_it_to --> GiveSub_R1 I6_NULL; Array B181_check_showing_it_to --> ShowSub_C1 ShowSub_C2 ShowSub_C3 ShowSub_C4 I6_NULL; Constant B182_carry_out_showing_it_to = EMPTY_RULEBOOK; Constant B183_report_showing_it_to = EMPTY_RULEBOOK; Array B184_check_waking --> WakeOtherSub_C1 WakeOtherSub_C2 I6_NULL; Constant B185_carry_out_waking = EMPTY_RULEBOOK; Constant B186_report_waking = EMPTY_RULEBOOK; Array B187_check_throwing_it_at --> ThrowAtSub_C1 ThrowAtSub_C2 ThrowAtSub_C3 ThrowAtSub_C4 ThrowAtSub_C5 I6_NULL; Constant B188_carry_out_throwing_it_a = EMPTY_RULEBOOK; Constant B189_report_throwing_it_at = EMPTY_RULEBOOK; Array B190_check_attacking --> AttackSub_C1 AttackSub_C2 I6_NULL; Constant B191_carry_out_attacking = EMPTY_RULEBOOK; Constant B192_report_attacking = EMPTY_RULEBOOK; Array B193_check_kissing --> KissSub_C1 KissSub_C2 KissSub_C3 I6_NULL; Constant B194_carry_out_kissing = EMPTY_RULEBOOK; Constant B195_report_kissing = EMPTY_RULEBOOK; Array B196_check_answering_it_that --> AnswerSub_C1 I6_NULL; Constant B197_carry_out_answering_it_ = EMPTY_RULEBOOK; Array B198_report_answering_it_tha --> AnswerSub_C2 I6_NULL; Array B199_check_telling_it_about --> TellSub_C1 TellSub_C2 I6_NULL; Constant B200_carry_out_telling_it_ab = EMPTY_RULEBOOK; Array B201_report_telling_it_about --> TellSub_C3 I6_NULL; Array B202_check_asking_it_about --> AskSub_C1 I6_NULL; Constant B203_carry_out_asking_it_abo = EMPTY_RULEBOOK; Array B204_report_asking_it_about --> AskSub_C2 I6_NULL; Array B205_check_asking_it_for --> AskForSub_C1 AskForSub_C2 I6_NULL; Constant B206_carry_out_asking_it_for = EMPTY_RULEBOOK; Constant B207_report_asking_it_for = EMPTY_RULEBOOK; Constant B208_check_touching = EMPTY_RULEBOOK; Constant B209_carry_out_touching = EMPTY_RULEBOOK; Array B210_report_touching --> TouchSub_R1 TouchSub_R2 TouchSub_R3 I6_NULL; Array B211_check_waving --> WaveSub_C1 I6_NULL; Constant B212_carry_out_waving = EMPTY_RULEBOOK; Array B213_report_waving --> WaveSub_R1 I6_NULL; Array B214_check_pulling --> PullSub_C1 PullSub_C2 PullSub_C3 I6_NULL; Constant B215_carry_out_pulling = EMPTY_RULEBOOK; Array B216_report_pulling --> PullSub_R1 I6_NULL; Array B217_check_pushing --> PushSub_C1 PushSub_C2 PushSub_C3 I6_NULL; Constant B218_carry_out_pushing = EMPTY_RULEBOOK; Array B219_report_pushing --> PushSub_R1 I6_NULL; Array B220_check_turning --> TurnSub_C1 TurnSub_C2 TurnSub_C3 I6_NULL; Constant B221_carry_out_turning = EMPTY_RULEBOOK; Array B222_report_turning --> TurnSub_R1 I6_NULL; Array B223_check_pushing_it_to --> PushDirSub_C1 I6_NULL; Constant B224_carry_out_pushing_it_to = EMPTY_RULEBOOK; Constant B225_report_pushing_it_to = EMPTY_RULEBOOK; Array B226_check_squeezing --> SqueezeSub_C1 I6_NULL; Constant B227_carry_out_squeezing = EMPTY_RULEBOOK; Array B228_report_squeezing --> SqueezeSub_R1 I6_NULL; Array B229_check_saying_yes --> YesSub_C1 I6_NULL; Constant B230_carry_out_saying_yes = EMPTY_RULEBOOK; Constant B231_report_saying_yes = EMPTY_RULEBOOK; Array B232_check_saying_no --> NoSub_C1 I6_NULL; Constant B233_carry_out_saying_no = EMPTY_RULEBOOK; Constant B234_report_saying_no = EMPTY_RULEBOOK; Array B235_check_burning --> BurnSub_C1 I6_NULL; Constant B236_carry_out_burning = EMPTY_RULEBOOK; Constant B237_report_burning = EMPTY_RULEBOOK; Array B238_check_waking_up --> WakeSub_C1 I6_NULL; Constant B239_carry_out_waking_up = EMPTY_RULEBOOK; Constant B240_report_waking_up = EMPTY_RULEBOOK; Array B241_check_thinking --> ThinkSub_C1 I6_NULL; Constant B242_carry_out_thinking = EMPTY_RULEBOOK; Constant B243_report_thinking = EMPTY_RULEBOOK; Array B244_check_smelling --> SmellSub_C1 I6_NULL; Constant B245_carry_out_smelling = EMPTY_RULEBOOK; Constant B246_report_smelling = EMPTY_RULEBOOK; Array B247_check_listening_to --> ListenSub_C1 I6_NULL; Constant B248_carry_out_listening_to = EMPTY_RULEBOOK; Constant B249_report_listening_to = EMPTY_RULEBOOK; Array B250_check_tasting --> TasteSub_C1 I6_NULL; Constant B251_carry_out_tasting = EMPTY_RULEBOOK; Constant B252_report_tasting = EMPTY_RULEBOOK; Array B253_check_cutting --> CutSub_C1 I6_NULL; Constant B254_carry_out_cutting = EMPTY_RULEBOOK; Constant B255_report_cutting = EMPTY_RULEBOOK; Array B256_check_jumping --> JumpSub_C1 I6_NULL; Constant B257_carry_out_jumping = EMPTY_RULEBOOK; Constant B258_report_jumping = EMPTY_RULEBOOK; Array B259_check_tying_it_to --> TieSub_C1 I6_NULL; Constant B260_carry_out_tying_it_to = EMPTY_RULEBOOK; Constant B261_report_tying_it_to = EMPTY_RULEBOOK; Array B262_check_drinking --> DrinkSub_C1 I6_NULL; Constant B263_carry_out_drinking = EMPTY_RULEBOOK; Constant B264_report_drinking = EMPTY_RULEBOOK; Array B265_check_saying_sorry --> SorrySub_C1 I6_NULL; Constant B266_carry_out_saying_sorry = EMPTY_RULEBOOK; Constant B267_report_saying_sorry = EMPTY_RULEBOOK; Array B268_check_swearing_obscenel --> StrongSub_C1 I6_NULL; Constant B269_carry_out_swearing_obsc = EMPTY_RULEBOOK; Constant B270_report_swearing_obscene = EMPTY_RULEBOOK; Array B271_check_swearing_mildly --> MildSub_C1 I6_NULL; Constant B272_carry_out_swearing_mild = EMPTY_RULEBOOK; Constant B273_report_swearing_mildly = EMPTY_RULEBOOK; Array B274_check_swinging --> SwingSub_C1 I6_NULL; Constant B275_carry_out_swinging = EMPTY_RULEBOOK; Constant B276_report_swinging = EMPTY_RULEBOOK; Array B277_check_rubbing --> RubSub_C1 I6_NULL; Constant B278_carry_out_rubbing = EMPTY_RULEBOOK; Constant B279_report_rubbing = EMPTY_RULEBOOK; Array B280_check_setting_it_to --> SetToSub_C1 I6_NULL; Constant B281_carry_out_setting_it_to = EMPTY_RULEBOOK; Constant B282_report_setting_it_to = EMPTY_RULEBOOK; Array B283_check_waving_hands --> WaveHandsSub_C1 I6_NULL; Constant B284_carry_out_waving_hands = EMPTY_RULEBOOK; Constant B285_report_waving_hands = EMPTY_RULEBOOK; Array B286_check_buying --> BuySub_C1 I6_NULL; Constant B287_carry_out_buying = EMPTY_RULEBOOK; Constant B288_report_buying = EMPTY_RULEBOOK; Array B289_check_singing --> SingSub_C1 I6_NULL; Constant B290_carry_out_singing = EMPTY_RULEBOOK; Constant B291_report_singing = EMPTY_RULEBOOK; Array B292_check_climbing --> ClimbSub_C1 I6_NULL; Constant B293_carry_out_climbing = EMPTY_RULEBOOK; Constant B294_report_climbing = EMPTY_RULEBOOK; Array B295_check_sleeping --> SleepSub_C1 I6_NULL; Constant B296_carry_out_sleeping = EMPTY_RULEBOOK; Constant B297_report_sleeping = EMPTY_RULEBOOK; Constant B298_check_requesting_the_sc = EMPTY_RULEBOOK; Array B299_carry_out_requesting_th --> ScoreSub_O1 I6_NULL; Constant B300_report_requesting_the_s = EMPTY_RULEBOOK; Constant B301_check_quitting_the_game = EMPTY_RULEBOOK; Array B302_carry_out_quitting_the_ --> QuitSub_O1 I6_NULL; Constant B303_report_quitting_the_gam = EMPTY_RULEBOOK; Constant B304_check_saving_the_game = EMPTY_RULEBOOK; Array B305_carry_out_saving_the_ga --> SaveSub_O1 I6_NULL; Constant B306_report_saving_the_game = EMPTY_RULEBOOK; Constant B307_check_restoring_the_gam = EMPTY_RULEBOOK; Array B308_carry_out_restoring_the --> RestoreSub_O1 I6_NULL; Constant B309_report_restoring_the_ga = EMPTY_RULEBOOK; Constant B310_check_restarting_the_ga = EMPTY_RULEBOOK; Array B311_carry_out_restarting_th --> RestartSub_O1 I6_NULL; Constant B312_report_restarting_the_g = EMPTY_RULEBOOK; Constant B313_check_verifying_the_sto = EMPTY_RULEBOOK; Array B314_carry_out_verifying_the --> VerifySub_O1 I6_NULL; Constant B315_report_verifying_the_st = EMPTY_RULEBOOK; Constant B316_check_requesting_the_st = EMPTY_RULEBOOK; Array B317_carry_out_requesting_th --> VersionSub_O1 I6_NULL; Constant B318_report_requesting_the_s = EMPTY_RULEBOOK; Constant B319_check_switching_the_sto = EMPTY_RULEBOOK; Array B320_carry_out_switching_the --> ScriptOnSub_O1 I6_NULL; Constant B321_report_switching_the_st = EMPTY_RULEBOOK; Constant B322_check_switching_the_sto = EMPTY_RULEBOOK; Array B323_carry_out_switching_the --> ScriptOffSub_O1 I6_NULL; Constant B324_report_switching_the_st = EMPTY_RULEBOOK; Constant B325_check_preferring_abbrev = EMPTY_RULEBOOK; Array B326_carry_out_preferring_ab --> LMode3Sub_O1 I6_NULL; Constant B327_report_preferring_abbre = EMPTY_RULEBOOK; Constant B328_check_preferring_unabbr = EMPTY_RULEBOOK; Array B329_carry_out_preferring_un --> LMode2Sub_O1 I6_NULL; Constant B330_report_preferring_unabb = EMPTY_RULEBOOK; Constant B331_check_preferring_someti = EMPTY_RULEBOOK; Array B332_carry_out_preferring_so --> LMode1Sub_O1 I6_NULL; Constant B333_report_preferring_somet = EMPTY_RULEBOOK; Constant B334_check_requesting_the_pr = EMPTY_RULEBOOK; Array B335_carry_out_requesting_th --> PronounsSub_O1 I6_NULL; Constant B336_report_requesting_the_p = EMPTY_RULEBOOK; Constant B337_check_switching_score_n = EMPTY_RULEBOOK; Array B338_carry_out_switching_sco --> NotifyOnSub_O1 I6_NULL; Constant B339_report_switching_score_ = EMPTY_RULEBOOK; Constant B340_check_switching_score_n = EMPTY_RULEBOOK; Array B341_carry_out_switching_sco --> NotifyOffSub_O1 I6_NULL; Constant B342_report_switching_score_ = EMPTY_RULEBOOK; Array B343_check_calling --> R_309 I6_NULL; Array B344_carry_out_calling --> R_310 I6_NULL; Constant B345_report_calling = EMPTY_RULEBOOK; Constant B346_when_cube_farm_1_panic_ = EMPTY_RULEBOOK; Constant B347_when_cube_farm_1_panic_ = EMPTY_RULEBOOK; Constant B348_check_feeding = EMPTY_RULEBOOK; Constant B349_carry_out_feeding = EMPTY_RULEBOOK; Constant B350_report_feeding = EMPTY_RULEBOOK; Constant B351_check_using = EMPTY_RULEBOOK; Constant B352_carry_out_using = EMPTY_RULEBOOK; Constant B353_report_using = EMPTY_RULEBOOK; Constant B354_when_saving_stan_begins = EMPTY_RULEBOOK; Array B355_when_saving_stan_ends --> R_319 I6_NULL; Constant B356_check_unpowering = EMPTY_RULEBOOK; Constant B357_carry_out_unpowering = EMPTY_RULEBOOK; Constant B358_report_unpowering = EMPTY_RULEBOOK; Constant B359_check_crushing = EMPTY_RULEBOOK; Constant B360_carry_out_crushing = EMPTY_RULEBOOK; Constant B361_report_crushing = EMPTY_RULEBOOK; Constant B362_when_final_ending_begin = EMPTY_RULEBOOK; Array B363_when_final_ending_ends --> R_329 I6_NULL; ! RTP.i6 segment ! Reporting of run-time problems in a format which can be parsed by the ! Inform application Global I7_enable_rte = true; Constant RTP_BACKDROP 1; Constant RTP_EXITDOOR 2; Constant RTP_NOEXIT 3; Constant RTP_CANTCHANGE 4; Constant RTP_IMPREL 5; Constant RTP_RULESTACK 6; Constant RTP_TOOMANYRULEBOOKS 7; Constant RTP_TOOMANYEVENTS 8; Constant RTP_BADPROPERTY 9; Constant RTP_UNPROVIDED 10; Constant RTP_UNSET 11; Constant RTP_TOOMANYACTS 12; Constant RTP_CANTABANDON 13; Constant RTP_CANTEND 14; Constant RTP_CANTMOVENOTHING 15; Constant RTP_CANTREMOVENOTHING 16; Constant RTP_DIVZERO 17; Constant RTP_BADVALUEPROPERTY 18; Constant RTP_NOTBACKDROP 19; Constant RTP_TABLE_NOCOL 20; Constant RTP_TABLE_NOCORR 21; Constant RTP_TABLE_NOROW 22; Constant RTP_TABLE_NOENTRY 23; Constant RTP_TABLE_NOTABLE 24; Constant RTP_TABLE_NOMOREBLANKS 25; Constant RTP_TABLE_NOROWS 26; Constant RTP_TABLE_CANTSORT 27; Constant RTP_NOTINAROOM 28; [ RunTimeProblem n obj obj2 ln obj3 i c; ! if (I7_enable_rte == false) return; I7_enable_rte = false; print "^*** Run-time problem P", n; ! if (ln == 0) ln=1; if (ln) print " (at paragraph ", ln, " in the source text)"; print ": "; switch(n) { RTP_BACKDROP: print "Tried to move ", (the) obj, " (a backdrop) to ", (the) obj2, ", which is not a region.^"; RTP_CANTCHANGE: print "Tried to change player to ", (the) obj, ", which is not a player-character.^"; RTP_NOEXIT: print "Tried to change ", (the) obj2, " exit of ", (the) obj, ", but it didn't seem to have such an exit to change.^"; RTP_EXITDOOR: print "Tried to change ", (the) obj2, " exit of ", (the) obj, ", but it led to a door, not a room.^"; RTP_IMPREL: print "Tried to access an inappropriate relation for ", (the) obj, ", violating '"; for (i=0: RelationList-->i ~= I6_NULL: i=i+3) { c = RelationList-->(i+1); if (((c == Relation_VtoV) || (c == Relation_Sym_VtoV)) && (obj2 == RelationList-->i)) { print (string) RelationList-->(i+2), "'.^"; } } RTP_RULESTACK: print "Too many procedural rules acting all at once.^"; RTP_TOOMANYRULEBOOKS: print "Too many rulebooks in simultaneous use.^"; RTP_TOOMANYEVENTS: print "Too many timed events are going on at once.^"; RTP_BADPROPERTY: print "Tried to access non-existent property for ", (the) obj, ".^"; RTP_UNPROVIDED: print "Since ", (the) obj, " is not allowed the property ~", (string) obj2, "~, it is against the rules to try to use it.^"; RTP_UNSET: print "Although ", (the) obj, " is allowed to have the property ~", (string) obj2, "~, no value was ever given, so it can't now be used.^"; RTP_TOOMANYACTS: print "Too many activities are going on at once.^"; RTP_CANTABANDON: print "Tried to abandon an activity which wasn't going on.^"; RTP_CANTEND: print "Tried to end an activity which wasn't going on.^"; RTP_CANTMOVENOTHING: print "You can't move nothing.^"; RTP_CANTREMOVENOTHING: print "You can't remove nothing from play.^"; RTP_DIVZERO: print "You can't divide by zero.^"; RTP_BADVALUEPROPERTY: print "Tried to access property for a value which didn't fit: ", "if this were a number it would be ", obj, ".^"; RTP_NOTBACKDROP: print "Tried to move ", (the) obj, " (not a backdrop) to ", (the) obj2, ", which is a region.^"; RTP_TABLE_NOCOL: print "Attempt to look up a non-existent column in the table '", (PrintTableName) obj, "'.^"; RTP_TABLE_NOCORR: print "Attempt to look up a non-existent correspondence in the table '", (PrintTableName) obj, "'.^"; RTP_TABLE_NOROW: print "Attempt to look up a non-existent row in the table '", (PrintTableName) obj, "'.^"; RTP_TABLE_NOENTRY: print "Attempt to look up a non-existent entry at column ", obj2, ", row ", obj3, " of the table '", (PrintTableName) obj, "'.^"; RTP_TABLE_NOTABLE: print "Attempt to blank out a row from a non-existent table (value ", obj, ").^"; RTP_TABLE_NOMOREBLANKS: print "Attempt to choose a blank row in a table with none left: table '", (PrintTableName) obj, "'.^"; RTP_TABLE_NOROWS: print "Attempt to choose a random row in an entirely blank table: table '", (PrintTableName) obj, "'.^"; RTP_TABLE_CANTSORT: print "Attempt to sort a table whose ordering must remain fixed: table '", (PrintTableName) obj, "'.^"; RTP_NOTINAROOM: print "Attempt to test if the current location is '", (the) obj, "', which is not a room or region.^"; } print "^"; ]; ! Protected Z-machine division routines: [ I7_Divide A B; if (B == 0) { RunTimeProblem(RTP_DIVZERO); rfalse; } return A/B; ]; [ I7_Rem A B; if (B == 0) { RunTimeProblem(RTP_DIVZERO); rfalse; } return A%B; ]; ! Protected Z-machine property and attribute access: [ PermitAttributeR obj off i; ! print "Asking permission of ", (the) obj, "^"; i=off; while (property_metadata-->i >= 0) { if (obj == property_metadata-->i) rtrue; i++; } rfalse; ]; [ PermitAttribute f obj att off textual i a l; if (att<0) att = ~att; if (metaclass(obj) ~= Object) rfalse; if (f) { if (att < I7_FBNA) off = attribute_offsets-->att; else off = attribute_offsets-->(50+att-I7_FBNA); } else off = property_offsets-->att; ! print "Off is ", off, "^"; ! for (i=0: i<116: i++) print attribute_offsets-->i, ", "; ! print "^^Props: "; ! for (i=0: i<166: i++) print property_offsets-->i, ", "; ! print "^"; if (off<0) return RunTimeProblem(RTP_BADPROPERTY, obj); textual = property_metadata-->off; off++; if (PermitAttributeR(obj, off)) jump Okay; if (obj provides i7_kind) { l = (obj.#i7_kind)/2; a = obj.&i7_kind; for (i=0: ii, off)) jump Okay; } RunTimeProblem(RTP_UNPROVIDED, obj, textual); rfalse; .Okay; if (f) rtrue; if (obj provides att) rtrue; RunTimeProblem(RTP_UNSET, obj, textual); rfalse; ]; [ AccessProp obj pr; if (Value_Property_Holder provides pr) { if ((obj<=0) || (obj > (Value_Property_Holder.pr)-->0)) { RunTimeProblem(RTP_BADVALUEPROPERTY); rfalse; } return (Value_Property_Holder.pr)-->(obj+1); } if ((pr == door_to) && (obj provides pr)) return obj.pr(); if (PermitAttribute(false, obj, pr)) return obj.pr; rfalse; ]; [ WriteAccessProp obj pr val; if (Value_Property_Holder provides pr) { if ((obj<=0) || (obj > (Value_Property_Holder.pr)-->0)) return RunTimeProblem(RTP_BADVALUEPROPERTY); (Value_Property_Holder.pr)-->(obj+1) = val; return; } if (PermitAttribute(false, obj, pr)) obj.pr = val; ]; ! Type checking failing at run-time [ Runtime_Type_Error file line arg; print ">--> A mistake in the source (~", (string) file, "~, line ", line, ") meant that argument ", arg, " had the wrong type.^"; ]; ! End of RTP.i6 segment ! Printing.i6 [ I7_DefaultPrinter x; print x; ]; Global debug_rule_nesting; [ SetString31 d; switch(d) { 0: string 31 ""; 1: string 31 " "; 2: string 31 " "; 3: string 31 " "; 4: string 31 " "; default: string 31 " "; } ]; [ I7_DivideParagraph; !print "[DP", say__p, say__pc, "]"; if (say__p) { new_line; say__p = 0; say__pc = say__pc | PARA_COMPLETED; if (say__pc & PARA_LINEBREAK) say__pc = say__pc - PARA_LINEBREAK; if (say__pc & PARA_FORCELINEBREAK) say__pc = say__pc - PARA_FORCELINEBREAK; } !print "[TO", say__p, say__pc, "]"; ]; [ I7_RunOnParagraph said; say__p = 0; say__pc = say__pc | PARA_LINEBREAK; if (said) say__pc = say__pc | PARA_FORCELINEBREAK; ]; [ I7_Prompt i; ! print "^"; style roman; if ((say__p) || ((say__pc & PARA_LINEBREAK) && ((say__pc & PARA_FORCELINEBREAK)==0))) { new_line; say__p=0; say__pc = 0; } switch(metaclass(I7_prompt_text)) { String: print (string) I7_prompt_text; Routine: I7_prompt_text(); } say__p = 0; say__pc = 0; if (I7_box) { for (i=0: I7_boxes_appeared-->i: i++) if (I7_boxes_appeared-->i == I7_box) { I7_box = 0; return; } I7_boxes_appeared-->i = I7_box; I7_box(); I7_box = 0; say__p = 0; say__pc = 0; } I7_enable_rte = true; ]; [ SL_Score_Moves; #ifdef I7_NOSCORE; print sline2; #ifnot; print sline1, "/", sline2; #endif; ]; [ SL_Location; if (location == thedark) print (name) location; else { FindVisibilityLevels(); if (visibility_ceiling == location) print (name) location; else print (The) visibility_ceiling; } ]; #Ifdef TARGET_ZCODE; #IfV5; #Iftrue (#version_number == 6); Constant DrawStatusLine_Preempted; [ DrawStatusLine width x charw scw s spc; (0-->8) = (0-->8) &~ $$00000100; s = say__p; spc = say__pc; BeginActivity(3); StatusLineHeight(gg_statuswin_size); ! Now clear the window. This isn't totally trivial. Our approach is to select the ! fixed space font, measure its width, and print an appropriate ! number of spaces. We round up if the screen isn't a whole number ! of characters wide, and rely on window 1 being set to clip by default. MoveCursor(1, 1); @set_font 4 -> x; width = ScreenWidth(); spaces width; say__p = 0; say__pc = 0; if (ForActivity(3) == false) { ! Back to standard font for the display. We use output_stream 3 to ! measure the space required, the aim being to get 50 characters ! worth of space for the location name. MoveCursor(1, 2); @set_font 1 -> x; switch (metaclass(I7_left_sl)) { String: print (string) I7_left_sl; Routine: I7_left_sl(); } @get_wind_prop 1 3 -> width; @get_wind_prop 1 13 -> charw; charw = charw & $FF; @output_stream 3 StorageForShortName; print (I7_string) I7_right_sl; @output_stream -3; scw = HDR_PIXELSTO3-->0 + charw; x = 1+width-scw; @set_cursor 1 x; print (I7_string) I7_right_sl; } ! Reselect roman, as Infocom's interpreters interpreters go funny ! if reverse is selected twice. MainWindow(); say__p = 0; say__pc = 0; EndActivity(3); say__p = s; say__pc = spc; ]; #Endif; ! #version_number == 6 #Endif; ! V5 #Endif; ! TARGET_ZCODE #Ifndef DrawStatusLine_Preempted; [ DrawStatusLine width posb s spc; s = say__p; spc = say__pc; BeginActivity(3); StatusLineHeight(1); MoveCursor(1, 1); width = ScreenWidth(); posb = width-15; spaces width; say__p = 0; say__pc = 0; if (ForActivity(3) == false) { MoveCursor(1, 2); switch(metaclass(I7_left_sl)) { String: print (string) I7_left_sl; Routine: I7_left_sl(); } MoveCursor(1, posb); switch(metaclass(I7_right_sl)) { String: print (string) I7_right_sl; Routine: I7_right_sl(); } } MoveCursor(1, 1); MainWindow(); say__p = 0; say__pc = 0; EndActivity(3); say__p = s; say__pc = spc; ]; #Endif; ! DrawStatusLine_Preempted [ I7_say_s; if (say__n ~= 1) print "s"; ]; [ I7_string s; if (s ofclass String) { print (string) s; return; } indirect(s); ]; [ I7SwapWF obj lst; objectloop (obj ofclass Object) { lst = false; if (obj has i7listflag) lst = true; give obj ~i7listflag; if (obj has workflag) give obj i7listflag; give obj ~workflag; if (lst) give obj workflag; } ]; [ I7List supp obj par flag mixed ct defart; objectloop (obj ofclass Object && obj has i7listflag) { ct++; if (flag == false) { flag = true; par = parent(obj); } else { if (parent(obj) ~= par) mixed = true; } } if (ct == 0) { print "nothing"; return; } if (supp < 0) { supp = -supp; mixed = true; defart = true; } if (supp & ISARE_BIT) { if (ct > 1) print "are "; else print "is "; supp = supp - ISARE_BIT; } if ((mixed == false) && (par)) { ct = c_style; I7SwapWF(); ! print "<"; WriteListFrom(child(par), ENGLISH_BIT+WORKFLAG_BIT+supp); I7SwapWF(); ! print ">"; c_style = ct; return; } objectloop (obj ofclass Object && obj has i7listflag) { give obj ~i7listflag; if (supp & DEFART_BIT) { if (defart) print (The) obj; else print (the) obj; defart = false; } else print (a) obj; ct--; #ifdef US_DIALECT; if (ct == 1) print ", and "; #ifnot; if (ct == 1) print " and "; #endif; if (ct > 1) print ", "; } ! print ">"; ]; [ I7WriteListFrom A opt; if (opt & EXTRAINDENT_BIT) { opt = opt - EXTRAINDENT_BIT; if (opt & WORKFLAG_BIT) opt = opt - WORKFLAG_BIT + EXTRA_WORKFLAG_BIT; WriteListFrom(A, opt, 1); } else WriteListFrom(A, opt); ]; [ I7_Locale L T1 T2; objectloop (L ofclass Object) give L ~I7_mentioned; ]; ! End of Printing.i6 ! Rulebooks.i6 segment ! (i) Rulebooks are numbered, and we need I6 constants for the numbers of ! some commonly used ones. (These numbers must correspond to those in the ! source of NI, and to the creation sequence in the Standard Rules.) Constant APROC_RB = 0; Constant AFTER_RB = 3; Constant PROC_RB = 4; Constant ACCESS_RB = 5; Constant GENERIC_CARRYOUT_RB = 7; Constant REPLY_RB = 8; Constant TURNEND_RB = 9; Constant REACHIN_RB = 10; Constant REACHOUT_RB = 11; Constant GAME_BEGINS_RB = 22; Constant GAME_ENDS_RB = 23; Constant GENERIC_CHECK_RB = 25; Constant GENERIC_REPORT_RB = 26; Constant PERSUADE_RB = 27; Constant UNABLE_RB = 28; Constant VISIBLE_RB = 29; ! (ii) We maintain a "rule change stack" to keep track of any temporary ! abolition or modification of rules otherwise used in the rulebooks. ! The rule change stack contains 3-word (6 byte) records, and is defined ! in Main.i6. [ PushRuleChange usage rule1 rule2; if (rulechange_sp >= RS_CAPACITY) { return RunTimeProblem(RTP_RULESTACK); } rulechange_stack-->rulechange_sp++ = usage; rulechange_stack-->rulechange_sp++ = rule1; rulechange_stack-->rulechange_sp++ = rule2; ]; ! The first word of each record indicates a usage type, of which one value ! is special and indicates the start of a frame. A new frame is opened on ! the stack each time a new "follow" occurs; recall that this processes a ! rulebook after consulting procedural rules, which may in turn modify ! the behaviour of other rules. These frame divisions, therefore, mark ! local scopes for modifications: anything from the top of the stack down ! to the topmost frame marker is currently in force. Global rule_frames = 0; Constant RS_FRAME = -1; ! The other possible values of usage are as follows: Constant RS_DONOTRUN = 1; Constant RS_RUN = 2; Constant RS_MOVEBEFORE = 3; Constant RS_MOVEAFTER = 4; Constant RS_DONOTUSE = 5; Constant RS_USE = 6; Constant RS_SUBSTITUTE = 7; Constant RS_SUCCEEDS = 8; Constant RS_FAILS = 9; ! (iii) To "follow" a rulebook, we start a new frame, process the ! procedural rules, then process the rulebook, then clear the frame back off ! the stack: [ BeginFollowRulebook; PushRuleChange(RS_FRAME, RS_FRAME, RS_FRAME); rule_frames++; ! print "+<", rule_frames, "/", rulechange_sp, ">"; if (rule_frames == 20) { RunTimeProblem(RTP_TOOMANYRULEBOOKS); rule_frames = -1; return; } ProcessRulebook(PROC_RB, 0, 1); ]; [ EndFollowRulebook r x y; if (rulechange_stack-->rulechange_sp == RS_SUCCEEDS) r = 1; else if (rulechange_stack-->rulechange_sp == RS_FAILS) r = 0; else r = -1; if (r ~= -1) { x = rulechange_stack-->(rulechange_sp+1); y = rulechange_stack-->(rulechange_sp+2); } rule_frames--; while (rulechange_sp > 0) { rulechange_sp = rulechange_sp - 3; if (rulechange_stack-->rulechange_sp == RS_FRAME) break; } if (rulechange_sp == 0) rule_frames = 0; if (r == 1) rulechange_stack-->rulechange_sp = RS_SUCCEEDS; else if (r == 0) rulechange_stack-->rulechange_sp = RS_FAILS; if (r ~= -1) { rulechange_stack-->(rulechange_sp+1) = x; rulechange_stack-->(rulechange_sp+2) = y; } ! print "-<", rule_frames, "/", rulechange_sp, ">"; ]; [ FollowRulebook rulebook par activity_flag rv; ! print "^{", rulebook, "}"; if (rulebook ~= PROC_RB) BeginFollowRulebook(); rv = ProcessRulebook(rulebook, par, activity_flag); if (rulebook ~= PROC_RB) EndFollowRulebook(); ! print "{/", rulebook, "}"; if (rv) rtrue; rfalse; ]; [ FollowRulebookSelfed R o ss rv; ss = self; if (o) self = o; rv = FollowRulebook(R, o, true); self = ss; return rv; ]; ! (iv) The main rulebook processing routine is ! ProcessRulebook(rulebook/rule) ! which returns true if the rulebook or rule chose to "succeed" or "fail", ! and false if it made no choice. In the event that a choice was made, the ! result is left as a record above the top of the stack, and should be ! collected immediately. ! First a variable logging the depth of recursion of rulebook processing, ! which at present is used only to print neatly formatted debugging: Global process_rulebook_count; ! The following bitmap is used in a simple state machine while working ! through a given routine: Constant RS_ACTIVE_BIT = 1; Constant RS_MOVED_BIT = 2; Constant RS_USERESULT_BIT = 4; Constant RS_ACTIVITY = 8; Constant RS_NOSKIPS = 16; ! The following flag records whether we are tracing rule invocations: Global debugging_rules = false; [ ProcessRulebook rulebook par bits rv x frame_base substituted_rule usage original_deadflag; ! if ((rulebook >= 0) && (rulebook < HIGHEST_RULEBOOK_NO)) { ! print "Rulebook ", rulebook, "^"; ! } if ((Protect_I7_Arrays-->0 ~= 16339) || (Protect_I7_Arrays-->1 ~= 12345)) { print "^^*** Fatal programming error: I7 arrays corrupted ***^^"; @quit; } if (bits) bits = RS_ACTIVITY + RS_NOSKIPS; if (rule_frames<0) rfalse; original_deadflag = deadflag; if (par) parameter_object = par; for (x = rulechange_sp-3: x>=0: x = x - 3) { usage = rulechange_stack-->x; if (usage == RS_FRAME) { x=x+3; break; } if (rulechange_stack-->(x+1) == rulebook) { if (usage == RS_MOVEBEFORE) bits = bits | (RS_MOVED_BIT); if (usage == RS_MOVEAFTER) bits = bits | (RS_MOVED_BIT); } } if (x<0) x=0; frame_base = x; if ((bits & RS_MOVED_BIT) && (rv == false)) { rfalse; } ! rv was a call parameter: it's no longer needed and is now reused bits = bits | RS_ACTIVE_BIT; bits = bits | RS_USERESULT_BIT; substituted_rule = rulebook; rv = 0; for (: xx; if (rulechange_stack-->(x+1) == rulebook) { if (usage == RS_DONOTRUN) bits = bits & (~RS_ACTIVE_BIT); if (usage == RS_RUN) bits = bits | (RS_ACTIVE_BIT); if (usage == RS_DONOTUSE) bits = bits & (~RS_USERESULT_BIT); if (usage == RS_USE) bits = bits | (RS_USERESULT_BIT); if (usage == RS_SUBSTITUTE) substituted_rule = rulechange_stack-->(x+2); } if ((usage == RS_MOVEBEFORE) && (rulechange_stack-->(x+2) == rulebook)) { rv = ProcessRulebook(rulechange_stack-->(x+1), par, (bits & RS_ACTIVITY ~= 0), true); if (rv) return rv; } } if ((bits & RS_ACTIVE_BIT) == 0) rfalse; ! We now reuse usage to keep the stack frame slimmer usage = debugging_rules; #ifdef DEBUG; AdjustDbr(substituted_rule); #endif; #ifndef I7_ECONOMY; if (debugging_rules) DebugRulebooks(substituted_rule, par); #endif; ! (A routine defined in the I7 code generator) process_rulebook_count = process_rulebook_count + debugging_rules; if ((substituted_rule >= 0) && (substituted_rule < HIGHEST_RULEBOOK_NO)) { substituted_rule = rulebooks_array-->substituted_rule; for (x=0, rv=0: (substituted_rule-->x~=I6_NULL) && (original_deadflag == deadflag): x++) { if ((rv = (ProcessRulebook(substituted_rule-->x, par, (bits & RS_ACTIVITY ~= 0)))) && (bits & RS_USERESULT_BIT)) break; rv = 0; } } else { if ((say__p) && (bits & RS_NOSKIPS == 0)) I7_DivideParagraph(); rv = indirect(substituted_rule); if (rv) rv = substituted_rule; } if (rv && (bits & RS_USERESULT_BIT)) { #ifdef DEBUG; AdjustDbr(substituted_rule); #endif; process_rulebook_count = process_rulebook_count - debugging_rules; if (process_rulebook_count < 0) process_rulebook_count = 0; #ifndef I7_ECONOMY; if (debugging_rules) { spaces(2*process_rulebook_count); if (rulechange_stack-->rulechange_sp == RS_SUCCEEDS) print "[stopped: success]^"; if (rulechange_stack-->rulechange_sp == RS_FAILS) print "[stopped: fail]^"; } #endif; debugging_rules = usage; return rv; } for (x=rulechange_sp-3: x>=frame_base: x = x-3) { if ((rulechange_stack-->x == RS_MOVEAFTER) && (rulechange_stack-->(x+2) == rulebook)) { rv = ProcessRulebook(rulechange_stack-->(x+1), par, (bits & RS_ACTIVITY ~= 0), true); if (rv) { process_rulebook_count--; debugging_rules = usage; return rv; } } } process_rulebook_count = process_rulebook_count - debugging_rules; rulechange_stack-->rulechange_sp = 0; debugging_rules = usage; rfalse; ]; ! (v) The following routines provide a sort of rule-changing API: [ ResultOfRule a; a = rulechange_stack-->rulechange_sp; if ((a == RS_FAILS) || (a == RS_SUCCEEDS)) { a = rulechange_stack-->(rulechange_sp + 1); if (a) return rulechange_stack-->(rulechange_sp + 2); } rfalse; ]; [ ActRulebookSucceeds rule_id; if (rule_id) I7_action_deciding_rule = rule_id; RulebookSucceeds(); ]; [ ActRulebookFails rule_id; if (rule_id) I7_action_deciding_rule = rule_id; RulebookFails(); ]; [ RulebookSucceeds valueflag value; PushRuleChange(RS_SUCCEEDS, valueflag, value); rulechange_sp = rulechange_sp - 3; ]; [ RulebookFails valueflag value; PushRuleChange(RS_FAILS, valueflag, value); rulechange_sp = rulechange_sp - 3; ]; [ RulebookSucceeded; if (rulechange_stack-->rulechange_sp == RS_SUCCEEDS) rtrue; rfalse; ]; [ SuppressRule rule; PushRuleChange(RS_DONOTRUN, rule, 0); ]; [ ReinstateRule rule; PushRuleChange(RS_RUN, rule, 0); ]; [ DonotuseRule rule; PushRuleChange(RS_DONOTUSE, rule, 0); ]; [ UseRule rule; PushRuleChange(RS_USE, rule, 0); ]; [ SubstituteRule rule1 rule2; PushRuleChange(RS_SUBSTITUTE, rule2, rule1); ]; [ MoveRuleBefore rule1 rule2; PushRuleChange(RS_MOVEBEFORE, rule1, rule2); ]; [ MoveRuleAfter rule1 rule2; PushRuleChange(RS_MOVEAFTER, rule1, rule2); ]; ! (vi) This is the I6 printing rule used for a value of kind "rule", which ! is the I6 packed address of the rule's routine: #IFNDEF I7_ECONOMY; Array RulebookNames --> "Action-processing rulebook" ! 0 "Before rulebook" ! 1 "Instead rulebook" ! 2 "After rulebook" ! 3 "Procedural rulebook" ! 4 "Accessibility rulebook" ! 5 "Action-specific rulebook" ! 6 "Carry out rulebook" ! 7 "General report rulebook" ! 8 "Turn sequence rulebook" ! 9 "Reaching inside rulebook" ! 10 "Reaching outside rulebook" ! 11 "General before rulebook" ! 12 "Actor-specific before rulebook" ! 13 "Location-specific before rulebook" ! 14 "Reaction before rulebook" ! 15 "Object-specific before rulebook" ! 16 "General after rulebook" ! 17 "Actor-specific after rulebook" ! 18 "Location-specific after rulebook" ! 19 "Reaction after rulebook" ! 20 "Object-specific after rulebook" ! 21 "When play begins rulebook" ! 22 "When play ends rulebook" ! 23 "Every turn rulebook" ! 24 "Check rulebook" ! 25 "Report rulebook" ! 26 "Persuasion rulebook" ! 27 "Unsuccessful attempt by rulebook" ! 28 "Visibility rulebook" ! 29 "Scene changing rulebook" ! 30 "before Printing the name rulebook" ! 31 "for Printing the name rulebook" ! 32 "after Printing the name rulebook" ! 33 "before Listing contents rulebook" ! 34 "for Listing contents rulebook" ! 35 "after Listing contents rulebook" ! 36 "before Grouping together rulebook" ! 37 "for Grouping together rulebook" ! 38 "after Grouping together rulebook" ! 39 "before Constructing the status line rulebook" ! 40 "for Constructing the status line rulebook" ! 41 "after Constructing the status line rulebook" ! 42 "before Listing nondescript items rulebook" ! 43 "for Listing nondescript items rulebook" ! 44 "after Listing nondescript items rulebook" ! 45 "before Deciding the scope rulebook" ! 46 "for Deciding the scope rulebook" ! 47 "after Deciding the scope rulebook" ! 48 "before Supplying a missing noun rulebook" ! 49 "for Supplying a missing noun rulebook" ! 50 "after Supplying a missing noun rulebook" ! 51 "before Supplying a missing second noun rulebook" ! 52 "for Supplying a missing second noun rulebook" ! 53 "after Supplying a missing second noun rulebook" ! 54 "before Reading a command rulebook" ! 55 "for Reading a command rulebook" ! 56 "after Reading a command rulebook" ! 57 "before Deciding whether all includes rulebook" ! 58 "for Deciding whether all includes rulebook" ! 59 "after Deciding whether all includes rulebook" ! 60 "before Printing the player's obituary rulebook" ! 61 "for Printing the player's obituary rulebook" ! 62 "after Printing the player's obituary rulebook" ! 63 "before Amusing a victorious player rulebook" ! 64 "for Amusing a victorious player rulebook" ! 65 "after Amusing a victorious player rulebook" ! 66 "before Printing the banner text rulebook" ! 67 "for Printing the banner text rulebo