SOFTP1.INC 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515
  1. { SoftPorn Adventure, include file # 1 (variable declarations) }
  2. const word_name_length = 4;
  3. type
  4. str10 = string[10];
  5. str15 = string[15];
  6. str25 = string[25];
  7. str80 = string[80];
  8. str120 = string[120];
  9. messg_string = str80;
  10. object_name_string = string[30];
  11. place_name_string = string[35];
  12. direction_name_string = string[6];
  13. verb_name_string = string[10];
  14. word_name_string = string[word_name_length];
  15. command_string = string[80];
  16. synonym = record
  17. orig : word_name_string;
  18. repl : word_name_string;
  19. end;
  20. set_of_char = set of char;
  21. directions = ( north, south, east, west, up, down, _no_direction );
  22. objects = (
  23. _desk, _washbasin, _graffiti, _mirror, _toilet,
  24. _businessman, _button, _bartender, _pimp, _hooker,
  25. _billboard, _preacher, _TV, _slot_machines, _cards,
  26. _ashtray, _blonde, _bed, _bum, _peephole,
  27. _door_west, _waitress, _table, _telephone, _closet,
  28. _sink, _elevator, _dealer, _cabinet, _bushes,
  29. _tree, _window, _sign, _girl, _newspaper,
  30. _ring, _whiskey, _beer, _hammer, _garbage,
  31. _flowers, _apple_core, _seeds, _candy, _pills,
  32. _plant, _passcard, _radio, _knife, _magazine,
  33. _rubber, _wine, _wallet, _doll, _apple,
  34. _pitcher, _stool, _rope, _rack, _mushroom,
  35. _control_unit, _curtain, _water,
  36. _taxi, _inventory, _all, _on, _off,
  37. _you, _no_object );
  38. places = (
  39. (* ==================== BAR =================== *)
  40. b_hallwy, b_bathrm, b_bar, b_street, b_backrm,
  41. b_g_dump, b_inroom, b_wledge, b_bedrm, b_balcny,
  42. (* =================== CASINO ================= *)
  43. c_street, c_marryc, c_casino, c_21room, c_lobby,
  44. c_hmoons, c_hallwy, c_balcny, c_htdesk,
  45. (* =================== DISCO ================== *)
  46. d_telbth, d_disco, d_street, d_entrnc, d_phrmcy,
  47. (* ================= PENTHOUSE ================ *)
  48. p_pntfoy, p_jacuzi, p_kitchn, p_garden, p_livrom,
  49. p_pntpch,
  50. (* ================= ELSEWHERE ================ *)
  51. youhavit, nowhere );
  52. verbs = (
  53. go, hail, take, drop, look, flush, open, inflate, play,
  54. press, enter, eat, drink, buy, climb, water, fill, pour,
  55. listen, close, jump,
  56. marry, fuck, wear, answer, call, break, cut, dance,
  57. kill, pay, smoke, show, smell, help, kiss, stab, say, quit,
  58. show_score, save, restore, _no_verb );
  59. { True constants: }
  60. const max_carried = 7;
  61. first_direction = north;
  62. last_direction = down;
  63. first_object = _desk;
  64. last_object = _no_object;
  65. first_place = b_hallwy;
  66. last_place = nowhere;
  67. first_verb = go;
  68. last_verb = _no_verb;
  69. type path_array = array[places,first_direction..last_direction] of places;
  70. { Typed constants = initialized variables: }
  71. const
  72. bar_area : set of places = [ b_hallwy .. b_balcny ];
  73. casino_area : set of places = [ c_street .. c_htdesk ];
  74. disco_area : set of places = [ d_telbth .. d_phrmcy ];
  75. penthouse_area : set of places = [ p_pntfoy .. p_pntpch ];
  76. public_places : set of places =
  77. [ c_street, c_casino, c_21room, c_lobby, c_htdesk, d_street, d_entrnc ];
  78. takeable_objects : set of objects
  79. = [ _newspaper, _ring, _whiskey, _beer, _hammer, _garbage, _flowers,
  80. _apple_core, _seeds, _candy, _pills, _plant, _passcard, _radio, _knife,
  81. _magazine, _rubber, _wine, _wallet, _doll, _apple, _pitcher, _stool,
  82. _rope, _rack, _mushroom, _control_unit, _water ];
  83. {Verbs that may be entered witout nouns }
  84. stand_alone_verbs : set of verbs
  85. = [ look, jump, dance, help, quit, show_score, save, restore ];
  86. {Verbs with special nouns }
  87. special_verbs : set of verbs =
  88. [ take {inven}, hail {taxi}, call {number}, play {slot/21}, buy,
  89. save, restore ];
  90. vowels : set of char = [ 'A', 'O', 'U', 'E', 'I', 'Y',
  91. 'a', 'o', 'u', 'e', 'i', 'y' ];
  92. direction_name : array[directions] of direction_name_string
  93. = ( 'North', 'South', 'East', 'West', 'Up', 'Down', 'No direction');
  94. object_name : array[objects] of object_name_string
  95. = ( 'A Desk',
  96. 'A Washbasin',
  97. 'Graffiti',
  98. 'A Mirror',
  99. 'A Toilet',
  100. 'A Businessman',
  101. 'A Button',
  102. 'The Bartender',
  103. 'A Big Dude!',
  104. 'A Funky Hooker',
  105. 'A Billboard',
  106. 'A Preacher',
  107. 'A TV',
  108. 'Slot Machines',
  109. 'Cards',
  110. 'An Ashtray',
  111. 'A Voluptous Blonde',
  112. 'A Bed',
  113. 'A Bum',
  114. 'A Peep Hole',
  115. 'A Door to the West',
  116. 'A Waitress',
  117. 'A Table',
  118. 'A Telephone',
  119. 'A Closet',
  120. 'A Sink',
  121. 'An Elevator',
  122. 'A Dealer',
  123. 'A Cabinet',
  124. 'Bushes',
  125. 'A Tree',
  126. 'A Window',
  127. 'A Sign',
  128. 'A Girl',
  129. 'A Newspaper',
  130. 'A Wedding Ring',
  131. 'A Shot of Whiskey',
  132. 'A Beer',
  133. 'A Hammer',
  134. 'Garbage',
  135. 'Flowers',
  136. 'The Core of an Apple',
  137. 'Seeds',
  138. 'Candy',
  139. 'Pills',
  140. 'A Plant',
  141. 'A Passcard',
  142. 'A Radio',
  143. 'A Pocket Knife',
  144. 'AdventureBoy Magazine',
  145. 'A Rubber',
  146. 'A Bottle of Wine',
  147. 'A Wallet',
  148. 'An Inflatable Doll',
  149. 'An Apple',
  150. 'A Pitcher',
  151. 'A Stool',
  152. 'A Rope',
  153. 'A Display Rack',
  154. 'A Mushroom',
  155. 'A Remote Control Unit',
  156. 'A Curtain',
  157. 'Water',
  158. 'A Taxi',
  159. 'Inventory',
  160. 'All',
  161. 'On',
  162. 'Off',
  163. 'Yourself',
  164. 'No object'
  165. );
  166. orig_object_place : array[objects] of places = (
  167. {A Desk} b_hallwy,
  168. {A Washbasin} b_bathrm,
  169. {Graffiti} b_bathrm,
  170. {A Mirror} b_bathrm,
  171. {A Toilet} b_bathrm,
  172. {A Businessman} b_hallwy,
  173. {A Button} c_htdesk, {and p_pntfoy}
  174. {The Bartender} b_bar,
  175. {A Big Dude!} b_backrm,
  176. {A Funky Hooker} b_bedrm,
  177. {A Billboard} b_balcny,
  178. {A Preacher} c_marryc,
  179. {A TV} b_backrm,
  180. {Slot Machines} c_casino,
  181. {Cards} c_21room,
  182. {An Ashtray} c_hallwy,
  183. {A Voluptous Blonde} c_htdesk,
  184. {A Bed} c_hmoons,
  185. {A Bum} d_street,
  186. {A Peep Hole} c_balcny,
  187. {A Door to the West} d_entrnc,
  188. {A Waitress} d_disco,
  189. {A Table} d_disco,
  190. {A Telephone} d_telbth,
  191. {A Closet} p_livrom,
  192. {A Sink} p_kitchn,
  193. {An Elevator} c_htdesk, {and p_pntfoy}
  194. {A Dealer} c_21room,
  195. {A Cabinet} p_kitchn,
  196. {Bushes} nowhere, {seen behind bushes}
  197. {A Tree} nowhere, {grown in garden}
  198. {A Window} b_wledge,
  199. {A Sign} b_street, {and c_street and d_street}
  200. {A Girl} d_disco, {c_marryc, c_hmoons, p_jacuzi}
  201. {A Newspaper} nowhere, {seen in drawer in b_hallwy}
  202. {A Wedding Ring} nowhere, {seen in washbasin in b_bathrm}
  203. {A Shot of Whiskey} nowhere, {bought in bar}
  204. {A Beer} nowhere, {bought in bar}
  205. {A Hammer} p_garden,
  206. {Garbage} b_g_dump,
  207. {Flowers} b_hallwy,
  208. {The Core of an Apple} nowhere, {found in garbage}
  209. {Seeds} nowhere, {found in apple core}
  210. {Candy} b_bedrm,
  211. {Pills} b_inroom,
  212. {A Plant} c_lobby,
  213. {A Passcard} nowhere, {found in ashtray in c_hallwy}
  214. {A Radio} c_balcny,
  215. {A Pocket Knife} nowhere, {given by bum}
  216. {AdventureBoy Magazine} nowhere, {found in rack in d_phrmcy}
  217. {A Rubber} d_phrmcy,
  218. {A Bottle of Wine} nowhere, {bought in disco, ordered by phone}
  219. {A Wallet} youhavit,
  220. {An Inflatable Doll} nowhere, {in closet in p_livrom}
  221. {An Apple} nowhere, {on tree grown in p_garden}
  222. {A Pitcher} nowhere, {in cabinet in p_kitchn}
  223. {A Stool} p_garden,
  224. {A Rope} nowhere, {innocent girl ties you with it}
  225. {A Display Rack} d_phrmcy,
  226. {A Mushroom} p_garden,
  227. {A Remote Control Unit} nowhere, {given by businessman}
  228. {A Curtain} b_bar,
  229. {Water} nowhere, {Can get it by Water On}
  230. {A Taxi} nowhere, {Used in Hail taxi}
  231. {Inventory} nowhere, {Used in Take Inventory}
  232. {All} nowhere, {Used in Take All, Drop All}
  233. {On, Off} nowhere, nowhere, {Used in Water On, Water Off}
  234. {You} nowhere,
  235. {No object} nowhere
  236. );
  237. verb_name : array[verbs] of word_name_string
  238. = ( 'GO ', 'HAIL', 'TAKE', 'DROP', 'LOOK',
  239. 'FLUS', 'OPEN', 'INFL', 'PLAY', 'PRES',
  240. 'ENTE', 'EAT ', 'DRIN', 'BUY ', 'CLIM',
  241. 'WATE', 'FILL', 'POUR', 'LIST', 'CLOS',
  242. 'JUMP', 'MARR', 'FUCK', 'WEAR', 'ANSW',
  243. 'CALL', 'BREA', 'CUT ', 'DANC', 'KILL',
  244. 'PAY ', 'SMOK', 'SHOW', 'SMEL', 'HELP',
  245. 'KISS', 'STAB', 'SAY ', 'QUIT',
  246. 'SCOR', 'SAVE', 'REST', '' );
  247. obj_name : array[objects] of word_name_string
  248. = ( 'DESK', 'WASH', 'GRAF', 'MIRR', 'TOIL',
  249. 'BUSI', 'BUTT', 'BART', 'DUDE', 'HOOK',
  250. 'BILL', 'PREA', 'TV ', 'SLOT', 'CARD',
  251. 'ASHT', 'VOLU', 'BED ', 'BUM ', 'HOLE',
  252. 'DOOR', 'WAIT', 'TABL', 'TELE', 'CLOS',
  253. 'SINK', 'ELEV', 'DEAL', 'CABI', 'BUSH',
  254. 'TREE', 'WIND', 'SIGN', 'GIRL', 'NEWS',
  255. 'RING', 'WHIS', 'BEER', 'HAMM', 'GARB',
  256. 'FLOW', 'CORE', 'SEED', 'CAND', 'PILL',
  257. 'PLAN', 'PASS', 'RADI', 'KNIF', 'MAGA',
  258. 'RUBB', 'WINE', 'WALL', 'DOLL', 'APPL',
  259. 'PITC', 'STOO', 'ROPE', 'RACK', 'MUSH',
  260. 'CONT', 'CURT', 'WATE',
  261. 'TAXI', 'INVE', 'ALL ', 'ON ', 'OFF ',
  262. 'YOU ', ''
  263. );
  264. syn_verbs = 20;
  265. syn_verb : array[1..syn_verbs] of synonym
  266. = ( ( orig:'GET '; repl:'TAKE' ),
  267. ( orig:'GRAB'; repl:'TAKE' ),
  268. ( orig:'LEAV'; repl:'DROP' ),
  269. ( orig:'PLAN'; repl:'DROP' ),
  270. ( orig:'GIVE'; repl:'DROP' ),
  271. ( orig:'SEAR'; repl:'LOOK' ),
  272. ( orig:'EXAM'; repl:'LOOK' ),
  273. ( orig:'READ'; repl:'LOOK' ),
  274. ( orig:'WATC'; repl:'LOOK' ),
  275. ( orig:'PULL'; repl:'OPEN' ),
  276. ( orig:'PUSH'; repl:'PRES' ),
  277. ( orig:'ORDE'; repl:'BUY ' ),
  278. ( orig:'SEDU'; repl:'FUCK' ),
  279. ( orig:'RAPE'; repl:'FUCK' ),
  280. ( orig:'SCRE'; repl:'FUCK' ),
  281. ( orig:'USE '; repl:'WEAR' ),
  282. ( orig:'DIAL'; repl:'CALL' ),
  283. ( orig:'SMAS'; repl:'BREA' ),
  284. ( orig:'STOP'; repl:'QUIT' ),
  285. ( orig:'BYE '; repl:'QUIT' )
  286. );
  287. syn_nouns = 17;
  288. syn_noun : array[1..syn_nouns] of synonym
  289. = ( ( orig:'CAB '; repl:'TAXI'),
  290. ( orig:'PEEP'; repl:'HOLE'),
  291. ( orig:'DRAW'; repl:'DESK'),
  292. ( orig:'BASI'; repl:'WASH'),
  293. ( orig:'PIMP'; repl:'DUDE'),
  294. ( orig:'MACH'; repl:'SLOT'),
  295. ( orig:'21 '; repl:'CARD'),
  296. ( orig:'BLAC'; repl:'CARD'),
  297. ( orig:'DISP'; repl:'RACK'),
  298. ( orig:'PHON'; repl:'TELE'),
  299. ( orig:'WEDD'; repl:'RING'),
  300. ( orig:'BLON'; repl:'VOLU'),
  301. ( orig:'EVE '; repl:'GIRL'),
  302. ( orig:'PAPE'; repl:'NEWS'),
  303. ( orig:'SHOT'; repl:'WHIS'),
  304. ( orig:'TRAS'; repl:'GARB'),
  305. ( orig:'UNIT'; repl:'CONT')
  306. );
  307. gl_words = 9;
  308. glue_words : array[1..gl_words] of word_name_string
  309. = ( 'A ', 'AN ', 'THE ', 'THIS', 'THAT',
  310. 'AT ', 'TO ', 'FROM', 'WITH' );
  311. dir_name : array[directions] of word_name_string
  312. = ( 'NORT', 'SOUT', 'EAST', 'WEST', 'UP ', 'DOWN', '' );
  313. place_name : array[places] of place_name_string
  314. = ( 'I''m in a Hallway',
  315. 'I''m in a Bathroom',
  316. 'I''m in a Sleazy Bar',
  317. 'I''m on a Street outside the Bar',
  318. 'I''m in the Backroom',
  319. 'I''m in a Filthy Dumpster',
  320. 'I''m inside the room I broke into!',
  321. 'I''m on a Window Ledge',
  322. 'I''m in a Hooker''s Bedroom',
  323. 'I''m on a Hooker''s Balcony',
  324. 'I''m on a Downtown Street',
  325. 'I''m in a Quickie Marriage Center',
  326. 'I''m in the Main Casino Room',
  327. 'I''m in the ''21'' Room',
  328. 'I''m in the Lobby of the Hotel',
  329. 'I''m in the Honeymoon Suite',
  330. 'I''m in the Hotel Hallway',
  331. 'I''m on the Honeymooner''s Balcony',
  332. 'I''m at the Hotel Desk',
  333. 'I''m in a Telephone Booth',
  334. 'I''m in the Disco',
  335. 'I''m on a Residential Street',
  336. 'I''m in the Disco''s Entrance',
  337. 'I''m in the Pharmacy',
  338. 'I''m in the Penthouse Foyer',
  339. 'I''m in the Jacuzzi',
  340. 'I''m in the Kitchen',
  341. 'I''m in the Garden',
  342. 'I''m in the Living Room',
  343. 'I''m on the Penthouse Porch',
  344. 'Nowhere',
  345. 'Carried by You'
  346. );
  347. orig_path: path_array = (
  348. { Place Path to North South East West Up Down }
  349. (* ==================== BAR =================== *)
  350. {b_hallwy} ( b_bathrm, nowhere, b_bar, nowhere, nowhere, nowhere ),
  351. {b_bathrm} ( nowhere, b_hallwy, nowhere, nowhere, nowhere, nowhere ),
  352. {b_bar} ( b_street, nowhere, nowhere, b_hallwy, nowhere, nowhere ),
  353. {b_street} ( nowhere, b_bar, nowhere, nowhere, nowhere, nowhere ),
  354. {b_backrm} ( nowhere, nowhere, nowhere, b_bar, b_bedrm, nowhere ),
  355. {b_g_dump} ( nowhere, nowhere, nowhere, b_street, nowhere, nowhere ),
  356. {b_inroom} ( b_wledge, nowhere, nowhere, nowhere, nowhere, nowhere ),
  357. {b_wledge} ( nowhere, nowhere, b_balcny, nowhere, nowhere, nowhere ),
  358. {b_bedrm} ( b_balcny, nowhere, nowhere, nowhere, nowhere, b_backrm ),
  359. {b_balcny} ( nowhere, b_bedrm, nowhere, b_wledge, nowhere, b_g_dump ),
  360. (* =================== CASINO ================= *)
  361. {c_street} ( c_marryc, nowhere, c_casino, nowhere, nowhere, nowhere ),
  362. {c_marryc} ( nowhere, c_street, nowhere, nowhere, nowhere, nowhere ),
  363. {c_casino} ( c_21room, nowhere, c_lobby, c_street, nowhere, nowhere ),
  364. {c_21room} ( nowhere, c_casino, nowhere, nowhere, nowhere, nowhere ),
  365. {c_lobby} ( nowhere, nowhere, nowhere, c_casino, c_htdesk, nowhere ),
  366. {c_hmoons} ( c_hallwy, nowhere, c_balcny, nowhere, nowhere, nowhere ),
  367. {c_hallwy} ( nowhere, nowhere, c_htdesk, nowhere, nowhere, nowhere ),
  368. {c_balcny} ( nowhere, nowhere, nowhere, c_hmoons, nowhere, nowhere ),
  369. {c_htdesk} ( nowhere, nowhere, nowhere, c_hallwy, nowhere, c_lobby ),
  370. (* =================== DISCO ================== *)
  371. {d_telbth} ( d_disco, nowhere, nowhere, nowhere, nowhere, nowhere ),
  372. {d_disco} ( nowhere, d_telbth, d_entrnc, nowhere, nowhere, nowhere ),
  373. {d_street} ( d_entrnc, nowhere, d_phrmcy, nowhere, nowhere, nowhere ),
  374. {d_entrnc} ( nowhere, d_street, nowhere, nowhere, nowhere, nowhere ),
  375. {d_phrmcy} ( nowhere, nowhere, nowhere, d_street, nowhere, nowhere ),
  376. (* ================= PENTHOUSE ================ *)
  377. {p_pntfoy} ( nowhere, nowhere, p_kitchn, nowhere, p_livrom, nowhere ),
  378. {p_jacuzi} ( nowhere, nowhere, nowhere, nowhere, p_pntpch, nowhere ),
  379. {p_kitchn} ( nowhere, nowhere, nowhere, p_pntfoy, nowhere, nowhere ),
  380. {p_garden} ( nowhere, nowhere, nowhere, nowhere, nowhere, nowhere ),
  381. {p_livrom} ( p_pntpch, nowhere, nowhere, nowhere, nowhere, p_pntfoy ),
  382. {p_pntpch} ( nowhere, p_livrom, nowhere, nowhere, nowhere, p_jacuzi ),
  383. (* ================= ELSEWHERE ================ *)
  384. {youhavit} ( nowhere, nowhere, nowhere, nowhere, nowhere, nowhere ),
  385. {nowhere} ( nowhere, nowhere, nowhere, nowhere, nowhere, nowhere )
  386. );
  387. type gamepos = record
  388. first_var : byte;
  389. object_place : array[objects] of places;
  390. place_visited : array[places] of boolean;
  391. path : path_array;
  392. your_place,
  393. new_place : places;
  394. inven : array[1..max_carried] of objects;
  395. carrying : 1..max_carried;
  396. noun : objects;
  397. verb : verbs;
  398. direction : directions;
  399. command : command_string;
  400. verbnam,
  401. objnam : word_name_string;
  402. game_ended : boolean;
  403. yesno : char;
  404. objects_carried,
  405. money,
  406. score,
  407. TV_channel : integer;
  408. rope_in_use,
  409. window_broken,
  410. toilet_flushed,
  411. called_555_0987,
  412. called_555_6969,
  413. called_555_0439,
  414. rubber_worn,
  415. hooker_fucked,
  416. door_W_open,
  417. radio_listened,
  418. wine_ordered,
  419. telephone_ringing,
  420. telephone_answered,
  421. hole_peeped,
  422. girl_2_fucked,
  423. tied_to_bed,
  424. drawer_open,
  425. closet_open,
  426. cabinet_open,
  427. doll_inflated,
  428. stool_climbed,
  429. water_on,
  430. pitcher_full,
  431. seeds_planted,
  432. seeds_watered,
  433. apple_given,
  434. candy_given,
  435. flowers_given,
  436. ring_given,
  437. married_to_girl : boolean;
  438. girl_name,
  439. girl_part,
  440. girl_do,
  441. your_part,
  442. your_object,
  443. rubber_color,
  444. rubber_flavor,
  445. rubber_lubricated,
  446. rubber_ribbed : str15
  447. end;
  448. var game_position : gamepos;
  449. i : integer;
  450. p : integer;
  451. iores : integer;
  452. line_from_kbd : str120;
  453. verb_only,
  454. no_verb,
  455. no_object,
  456. no_direction : boolean;
  457. full_verb,
  458. full_noun : str25;
  459. save_file : file of gamepos;
  460. taxi_destination : str10;
  461. password : str10;
  462. _noun : objects; {loop variable}
  463. anything_carried : boolean;
  464.