fork download
  1. {$mode objfpc} {$h+} {$modeswitch duplicatelocals}
  2. {$warn 5024 off} // hint: parameter not used
  3.  
  4. {$define demonstrate} // дефайн для ideone-демонстрации вместо интерактива
  5.  
  6. program quest;
  7.  
  8. uses
  9. SysUtils;
  10.  
  11. type
  12. // Для подсчёта ссылок: сильные ссылки хранятся как пара obj: TMyObject + objRef: Reference, тем самым можно продолжать работать с голым obj по-человечески.
  13. Reference = IInterface;
  14.  
  15. function IfThen(cond: boolean; const ifTrue: unicodestring; const ifFalse: unicodestring = ''): unicodestring;
  16. begin
  17. if cond then result := ifTrue else result := ifFalse;
  18. end;
  19.  
  20. type
  21. TWorld = class;
  22.  
  23. TScene = class(TInterfacedObject)
  24. type
  25. FlagEnum = (Scene_IsEnding);
  26. FlagSet = set of FlagEnum;
  27. protected
  28. world: TWorld;
  29. procedure HandleDisplay; virtual; abstract;
  30. procedure HandleCommands; virtual;
  31. function HandleFlags: FlagSet; virtual;
  32. function Command(const cmd, desc: unicodestring): boolean;
  33. end;
  34.  
  35. TWorld = class(TInterfacedObject)
  36. // Логика насчёт сцены и её смены.
  37. scene, pendingSwitchTo: TScene;
  38. turnedOff: boolean;
  39. constructor Create(startingScene: TScene);
  40. function Alive: boolean;
  41. procedure Display;
  42. procedure SendCommand(const cmd: unicodestring);
  43. procedure SwitchTo(scene: TScene);
  44. procedure TurnOff;
  45. private
  46. sceneRef, pendingSwitchToRef: Reference;
  47. commandMode: (AwaitingCommandsToDescribe, AwaitingCommandToPerform, CommandPerformed);
  48. commandToPerform: unicodestring;
  49. hasCommandsExceptEnter: boolean;
  50. procedure CompleteSwitching;
  51.  
  52. public
  53. // Всякие персистентные штуки.
  54. type
  55. SexEpisode = (Sex_Anal, Sex_Irrumatio, Sex_Vaginal);
  56. SexEpisodes = set of SexEpisode;
  57. var
  58. sexProceed: SexEpisodes;
  59. erectOnce, doorOpened, petuhissaExamined: boolean;
  60. function SexProceedCount: cardinal;
  61. end;
  62.  
  63. procedure TScene.HandleCommands;
  64. begin
  65. end;
  66.  
  67. function TScene.HandleFlags: FlagSet;
  68. begin
  69. result := [];
  70. end;
  71.  
  72. function TScene.Command(const cmd, desc: unicodestring): boolean;
  73. begin
  74. result := false;
  75. if cmd <> '' then world.hasCommandsExceptEnter := true;
  76. case world.commandMode of
  77. AwaitingCommandsToDescribe: writeln(IfThen(cmd = '', '<ENTER> ', '(' + cmd + ') ') + desc);
  78. AwaitingCommandToPerform:
  79. if cmd = world.commandToPerform then
  80. begin
  81. result := true;
  82. world.commandMode := CommandPerformed;
  83. end;
  84. CommandPerformed: ;
  85. end;
  86. end;
  87.  
  88. constructor TWorld.Create(startingScene: TScene);
  89. begin
  90. inherited Create;
  91. SwitchTo(startingScene);
  92. CompleteSwitching;
  93. end;
  94.  
  95. function TWorld.Alive: boolean;
  96. begin
  97. result := not turnedOff;
  98. end;
  99.  
  100. procedure TWorld.Display;
  101. begin
  102. scene.HandleDisplay;
  103. if Scene_IsEnding in scene.HandleFlags then exit;
  104. writeln;
  105. commandMode := AwaitingCommandsToDescribe;
  106. hasCommandsExceptEnter := false;
  107. scene.HandleCommands;
  108. if hasCommandsExceptEnter then write(LineEnding + '> ');
  109. end;
  110.  
  111. procedure TWorld.SendCommand(const cmd: unicodestring);
  112. begin
  113. if Scene_IsEnding in scene.HandleFlags then
  114. begin
  115. TurnOff;
  116. exit;
  117. end;
  118. commandMode := AwaitingCommandToPerform;
  119. commandToPerform := cmd;
  120. scene.HandleCommands;
  121. if commandMode = CommandPerformed then
  122. begin
  123. if cmd <> '' then writeln;
  124. end else
  125. writeln('Ась?' + LineEnding);
  126. CompleteSwitching; // обработка команды могла вызвать SwitchTo
  127. end;
  128.  
  129. procedure TWorld.SwitchTo(scene: TScene);
  130. begin
  131. if scene.world <> nil then raise Exception.Create('Нет, создай новую сценку.');
  132.  
  133. // SwitchTo не переключает состояние сразу, потому что это предполагает освобождение старого состояния,
  134. // которое прямо сейчас выполняет какой-нибудь HandleCommand и может не ожидать выдёргивания почвы у себя из-под ног.
  135. pendingSwitchTo := scene;
  136. pendingSwitchToRef := pendingSwitchTo;
  137. end;
  138.  
  139. procedure TWorld.TurnOff;
  140. begin
  141. turnedOff := true;
  142. end;
  143.  
  144. procedure TWorld.CompleteSwitching;
  145. begin
  146. if pendingSwitchTo <> nil then
  147. begin
  148. scene := pendingSwitchTo;
  149. sceneRef := pendingSwitchTo;
  150. pendingSwitchTo := nil;
  151. pendingSwitchToRef := nil;
  152. scene.world := self;
  153. end;
  154. end;
  155.  
  156. function TWorld.SexProceedCount: cardinal;
  157. var
  158. se: SexEpisode;
  159. begin
  160. result := 0;
  161. for se in SexEpisode do
  162. if se in sexProceed then inc(result);
  163. end;
  164.  
  165. type
  166. Scene_Prologue = class(TScene)
  167. protected
  168. procedure HandleDisplay; override;
  169. procedure HandleCommands; override;
  170. end;
  171.  
  172. Scene_LeaveIsland = class(TScene)
  173. protected
  174. procedure HandleDisplay; override;
  175. function HandleFlags: FlagSet; override;
  176. end;
  177.  
  178. Scene_Petuhissa = class(TScene)
  179. protected
  180. procedure HandleDisplay; override;
  181. procedure HandleCommands; override;
  182. end;
  183.  
  184. Scene_Girl = class(TScene)
  185. constructor Create(comeFromFar: boolean);
  186. protected
  187. procedure HandleDisplay; override;
  188. procedure HandleCommands; override;
  189. private
  190. comeFromFar: boolean;
  191. end;
  192.  
  193. Scene_Irrumatio = class(TScene)
  194. protected
  195. procedure HandleDisplay; override;
  196. procedure HandleCommands; override;
  197. private
  198. stage: cardinal;
  199. end;
  200.  
  201. Scene_Vaginal = class(TScene)
  202. protected
  203. procedure HandleDisplay; override;
  204. procedure HandleCommands; override;
  205. private
  206. stage: cardinal;
  207. end;
  208.  
  209. Scene_Anal = class(TScene)
  210. protected
  211. procedure HandleDisplay; override;
  212. procedure HandleCommands; override;
  213. private
  214. stage: cardinal;
  215. end;
  216.  
  217. Scene_CantOpen = class(TScene)
  218. protected
  219. procedure HandleDisplay; override;
  220. procedure HandleCommands; override;
  221. end;
  222.  
  223. Scene_DoorOpeningSound = class(TScene)
  224. protected
  225. procedure HandleDisplay; override;
  226. procedure HandleCommands; override;
  227. end;
  228.  
  229. Scene_DoorEntry = class(TScene)
  230. protected
  231. procedure HandleDisplay; override;
  232. procedure HandleCommands; override;
  233. end;
  234.  
  235. Scene_GirlRevenge1 = class(TScene)
  236. protected
  237. procedure HandleDisplay; override;
  238. procedure HandleCommands; override;
  239. function HandleFlags: FlagSet; override;
  240. private
  241. stage: cardinal;
  242. end;
  243.  
  244. Scene_GirlRevenge2 = class(TScene)
  245. protected
  246. procedure HandleDisplay; override;
  247. function HandleFlags: FlagSet; override;
  248. end;
  249.  
  250. procedure Scene_Prologue.HandleDisplay;
  251. begin
  252. writeln(
  253. 'В древней книге ты прочитал о Подземелье Дырача, которое даст славу и могущество тому, кто его пройдёт.' + LineEnding +
  254. 'Когда ты приплыл по координатам, загадочный остров возник из ниоткуда.' + LineEnding +
  255. 'Ты спускаешься на берег.');
  256. end;
  257.  
  258. procedure Scene_Prologue.HandleCommands;
  259. begin
  260. if Command('1', 'Исследовать остров.') then world.SwitchTo(Scene_Girl.Create({comeFromFar} true));
  261. if Command('0', 'Покинуть остров.') then world.SwitchTo(Scene_LeaveIsland.Create);
  262. end;
  263.  
  264. procedure Scene_LeaveIsland.HandleDisplay;
  265. begin
  266. writeln(
  267. 'Испуганный, ты развернулся и побежал к кораблю. Ты отплыл от острова, но так и не вернулся домой.' + LineEnding +
  268. '' + LineEnding +
  269. '<КОНЕЦ>');
  270. end;
  271.  
  272. function Scene_LeaveIsland.HandleFlags: FlagSet;
  273. begin
  274. result := [Scene_IsEnding];
  275. end;
  276.  
  277. procedure Scene_Petuhissa.HandleDisplay;
  278. begin
  279. writeln(
  280. 'Ты подходишь к Петухиссе, плешивому мужичку лет пятидесяти на вид.' + LineEnding +
  281. 'Исступлённые удары головой оказались молитвой выцарапанному на камне изображению лисы, какой её мог бы нарисовать ребёнок с ДЦП.' + LineEnding +
  282. 'Ты вспоминаешь, как твой дед чуть не лишился уха в схватке с таким же шизофреником, и инстинктивно отскакиваешь.' + LineEnding +
  283. 'Петухисса оборачивается на звук и замечает твоё искажённое отвращением лицо:' + LineEnding +
  284. '«Ага, хейтерок! Подрочил на меня? Подрочил?»');
  285. end;
  286.  
  287. procedure Scene_Petuhissa.HandleCommands;
  288. begin
  289. if Command('', 'Больше не подходить.') then
  290. begin
  291. world.petuhissaExamined := true;
  292. world.SwitchTo(Scene_Girl.Create({comeFromFar} false));
  293. end;
  294. end;
  295.  
  296. constructor Scene_Girl.Create(comeFromFar: boolean);
  297. begin
  298. inherited Create;
  299. self.comeFromFar := comeFromFar;
  300. end;
  301.  
  302. procedure Scene_Girl.HandleDisplay;
  303. var
  304. piece, petuhissaPiece: unicodestring;
  305. shineMentioned: boolean;
  306. begin
  307. writeln(
  308. IfThen(comeFromFar,
  309. 'В сотне метров от берега виднеется витражный купол.' + LineEnding +
  310. 'Подойдя ближе, ты',
  311. 'Ты') + ' видишь каменную площадку и дверь, высеченную в скале.');
  312. if world.doorOpened then
  313. writeln('Изображение треугольника почти выветрилось, его оставшиеся фрагменты окрасились тёмно-красным.')
  314. else
  315. begin
  316. piece := '';
  317. case world.SexProceedCount of
  318. 1: piece := 'Одна из стрелок выглядит выветренной.';
  319. 2: piece := 'Две из стрелок наполовину выветрились.';
  320. end;
  321. writeln('На двери нарисован треугольник, концы трёх стрелок направлены к его вершинам извне.' + IfThen(piece <> '', LineEnding) + piece);
  322. end;
  323.  
  324. piece := 'В центре площадки лежит голая Паппи. ' +
  325. IfThen(world.doorOpened,
  326. 'Она без сознания, но, кажется, стала более подвижной.' + LineEnding +
  327. 'Ты сомневаешься, что она оценит твой дружеский вклад, поэтому не хочешь попадаться ей на глаза.',
  328. 'Похоже, она без сознания.');
  329.  
  330. shineMentioned := false;
  331. if Sex_Irrumatio in world.sexProceed then
  332. begin
  333. piece += LineEnding + 'Рот девушки блестит на солнце, пробивающемся сквозь купол.';
  334. shineMentioned := true;
  335. end;
  336. if world.sexProceed * [Sex_Vaginal, Sex_Anal] = [Sex_Vaginal] then
  337. begin
  338. piece += LineEnding +
  339. 'Её вагина зияет, ' + IfThen(shineMentioned,
  340. 'из неё течёт струйка вязкой жидкости.',
  341. 'вытекающая струйка вязкой жидкости блестит на солнце, пробивающемся сквозь купол.');
  342. shineMentioned := true;
  343. end
  344. else if world.sexProceed * [Sex_Vaginal, Sex_Anal] = [Sex_Anal] then
  345. begin
  346. piece += LineEnding +
  347. 'Её анус зияет, ' + IfThen(shineMentioned,
  348. 'из него течёт струйка вязкой жидкости.',
  349. 'вытекающая струйка вязкой жидкости блестит на солнце, пробивающемся сквозь купол.');
  350. shineMentioned := true;
  351. end
  352. else if world.sexProceed * [Sex_Vaginal, Sex_Anal] = [Sex_Vaginal, Sex_Anal] then
  353. begin
  354. piece += LineEnding +
  355. IfThen(not shineMentioned, 'Анус и вагина девушки зияют, ', 'Анус и вагина зияют, ') + IfThen(shineMentioned,
  356. 'из них натекла небольшая флуоресцирующая лужица.',
  357. 'лужица вязкой жидкости, натёкшей из них, блестит на солнце, пробивающемся сквозь купол.');
  358. shineMentioned := true;
  359. end;
  360.  
  361. petuhissaPiece := '';
  362. if world.petuhissaExamined then
  363. case world.SexProceedCount of
  364. 0: petuhissaPiece := 'Доносится бессвязное бормотание Петухиссы. Возможно, до помешательства у него была заебавшая семья и бесполезная работа, от которых он бежал сюда. Но Подземелье Дырача не щадит слабых духом.';
  365. 1: petuhissaPiece := 'Петухисса завороженно наблюдает за вами, позабыв о лисе. В его глазах загорелся огонёк, а ковидная маска пропиталась слюной.';
  366. 2: petuhissaPiece := 'Петухисса трётся промежностью о выступ в стене.';
  367. 3: petuhissaPiece := 'Истощённый Петухисса падает без сил. Нельзя так напрягаться в его возрасте.';
  368. end
  369. else if world.sexProceed = [] then
  370. petuhissaPiece := 'В углу сидит Петухисса в смирительной рубашке и бьётся лбом о каменную ограду. Глухой стук отмеряет время.';
  371. if petuhissaPiece <> '' then piece := LineEnding + piece + LineEnding + petuhissaPiece;
  372.  
  373. writeln(piece);
  374. end;
  375.  
  376. procedure Scene_Girl.HandleCommands;
  377. var
  378. cmdNo: integer;
  379. puppyMentioned: boolean;
  380. begin
  381. puppyMentioned := false;
  382. cmdNo := 1;
  383. if not world.petuhissaExamined and (world.sexProceed = []) then
  384. begin
  385. if Command(unicodestring(IntToStr(cmdNo)), 'Подойти к Петухиссе.') then world.SwitchTo(Scene_Petuhissa.Create);
  386. inc(cmdNo);
  387. end;
  388. if not (Sex_Irrumatio in world.sexProceed) then
  389. begin
  390. if Command(unicodestring(IntToStr(cmdNo)), 'Трахнуть Паппи в рот.') then world.SwitchTo(Scene_Irrumatio.Create);
  391. puppyMentioned := true;
  392. inc(cmdNo);
  393. end;
  394. if not (Sex_Vaginal in world.sexProceed) then
  395. begin
  396. if Command(unicodestring(IntToStr(cmdNo)), 'Трахнуть' + IfThen(not puppyMentioned, ' Паппи') + ' в вагину.') then world.SwitchTo(Scene_Vaginal.Create);
  397. puppyMentioned := true;
  398. inc(cmdNo);
  399. end;
  400. if not (Sex_Anal in world.sexProceed) then
  401. begin
  402. if Command(unicodestring(IntToStr(cmdNo)), 'Трахнуть' + IfThen(not puppyMentioned, ' Паппи') + ' в анус.') then world.SwitchTo(Scene_Anal.Create);
  403. puppyMentioned := true;
  404. inc(cmdNo);
  405. end;
  406. if Command(unicodestring(IntToStr(cmdNo)), 'Открыть дверь.') then
  407. if world.doorOpened then
  408. world.SwitchTo(Scene_DoorEntry.Create)
  409. else
  410. world.SwitchTo(Scene_CantOpen.Create);
  411. inc(cmdNo);
  412. if Command('0', 'Покинуть остров.') then world.SwitchTo(Scene_LeaveIsland.Create);
  413. end;
  414.  
  415. procedure NoteSexEpisodeAndReturn(world: TWorld; se: TWorld.SexEpisode);
  416. begin
  417. world.sexProceed += [se];
  418. world.erectOnce := true;
  419.  
  420. if world.sexProceed = [Sex_Anal, Sex_Irrumatio, Sex_Vaginal] then
  421. begin
  422. world.doorOpened := true;
  423. world.SwitchTo(Scene_DoorOpeningSound.Create);
  424. end else
  425. world.SwitchTo(Scene_Girl.Create({comeFromFar} false));
  426. end;
  427.  
  428. procedure Scene_Irrumatio.HandleDisplay;
  429. begin
  430. case stage of
  431. 0: writeln(
  432. 'Губы Паппи манят тебя. Ты приближаешься, чтобы облизнуть их, и чувствуешь её слабое дыхание.' + LineEnding +
  433. 'Ты не ощущаешь сопротивления, проникая языком в её рот. Твой член' + IfThen(world.erectOnce, ' снова') + ' поднимается.' + LineEnding +
  434. 'Ты завершаешь поцелуй и придвигаешься бёдрами.' + LineEnding +
  435. 'Придерживая голову девушки, ты прижимаешь член к её губам. Они распахиваются вслед за приоткрывшейся челюстью и принимают его внутрь.' + LineEnding +
  436. 'Ты начинаешь двигаться. Основание члена ритмично скользит по её податливому языку, а головка тычется в мягкое нёбо.');
  437. 1: writeln(
  438. 'Не вытаскивая члена, ты разворачиваешься и утыкаешься лбом в промежность Паппи. Она слабо пахнет морскими водорослями.' + LineEnding +
  439. 'Ты обхватываешь бёдра девушки руками и с усилием просовываешь член ей в глотку. Её горло сводит судорога.' + LineEnding +
  440. 'Ты остаёшься неподвижен и прислушиваешься к ощущениям, пока её горло расслабляется.' + LineEnding +
  441. 'Ты постепенно возобновляешь движения, и через минуту уже, сквозь слюни и сбивающееся дыхание, раз за разом топишь член в её глотке по самые яйца.');
  442. 2: writeln(
  443. 'После ещё нескольких толчков ты разряжаешься внутрь.' + LineEnding +
  444. 'Перистальтика пищевода слабее, чем если бы Паппи была в сознании, но, так или иначе, большая часть спермы оказывается у неё в желудке.' + LineEnding +
  445. 'Ты медленно вынимаешь обслюнявленный член из её рта.');
  446. end;
  447. end;
  448.  
  449. procedure Scene_Irrumatio.HandleCommands;
  450. begin
  451. case stage of
  452. 0: if Command('', 'Продолжать.') then inc(stage);
  453. 1: if Command('', 'Кончить в горло.') then inc(stage);
  454. 2: if Command('', 'Подняться.') then NoteSexEpisodeAndReturn(world, Sex_Irrumatio);
  455. end;
  456. end;
  457.  
  458. procedure Scene_Vaginal.HandleDisplay;
  459. begin
  460. case stage of
  461. 0: writeln(
  462. 'Ты спускаешься на колени перед промежностью Паппи.' + LineEnding +
  463. 'В островке волос на её лобке застряли кристаллики соли.' + LineEnding +
  464. 'Ты гладишь Паппи по нежной внутренней поверхности бёдер, и она постанывает сквозь забытьё.' + LineEnding +
  465. 'Ты раздвигаешь половые губы девушки левой рукой, а двумя пальцами правой дразнишь вход во влагалище. Надавив сильнее, легко проскальзываешь ими вовнутрь и аккуратно растягиваешь в стороны. Ты видишь, как потревоженные стенки влагалища пульсируют, пытаясь вернуться к первоначальной форме.');
  466. 1: writeln(
  467. IfThen(world.erectOnce, 'Со снова', 'С') + ' налитым кровью членом, ты запрокидываешь одну ногу Паппи себе на плечо.' + LineEnding +
  468. 'Помогая свободной рукой, ты трёшься стволом члена вдоль её половых губ и клитора. Затем уверенно направляешь головку внутрь, и она утопает с хлюпанием смазки.' + LineEnding +
  469. 'Ты кладёшь ладонь на живот девушки и совершаешь несколько пробных фрикций, постепенно увеличивая глубину.' + LineEnding +
  470. 'Стенки влагалища плотно обхватывают тебя, но с готовностью поддаются твоим движениям.' + LineEnding +
  471. 'Раззадоренный, ты запрокидываешь её вторую ногу, упираешься локтями в каменный пол и начинаешь бесцеремонно трахать, доставая аккурат до шейки матки в крайней точке амплитуды.' + LineEnding +
  472. 'Купол заполняется похабными звуками соударения юных тел.');
  473. 2: writeln(
  474. 'Устав держаться на весу, ты встаёшь на голени и разводишь ноги девушки в стороны.' + LineEnding +
  475. 'Ты продолжаешь движения тазом. Грудь Паппи покачивается в такт, и ты алчно протягиваешь к ней руки. Ты впиваешься в неё пальцами; девушка в сознании вскрикнула бы от боли, но сейчас она лишь выдохнула сильнее обычного.' + LineEnding +
  476. 'На пределе ты приподнимаешь Паппи за талию, погружаешь член до упора, и он, пульсируя, заполняет её горячим семенем.' + LineEnding +
  477. 'На фоне разгорячённого дыхания девушки ты прислушиваешься к отголоскам оргазма, и наконец осторожно достаёшь свой полностью обмякший член.');
  478. end;
  479. end;
  480.  
  481. procedure Scene_Vaginal.HandleCommands;
  482. begin
  483. case stage of
  484. 0: if Command('', 'Секс.') then inc(stage);
  485. 1: if Command('', 'Полапать грудь + финал.') then inc(stage);
  486. 2: if Command('', 'Подняться.') then NoteSexEpisodeAndReturn(world, Sex_Vaginal);
  487. end;
  488. end;
  489.  
  490. procedure Scene_Anal.HandleDisplay;
  491. begin
  492. case stage of
  493. 0: writeln(
  494. 'Ты переворачиваешь Паппи на живот. Твоему взору открываются её спина и ягодицы.' + LineEnding +
  495. 'Ты несколько раз звонко шлёпаешь по ягодицам, оставляя горящие отпечатки ладоней. Твой член давно рвётся ввысь' + IfThen(world.erectOnce, ' снова') + '.' + LineEnding +
  496. 'Ты оттягиваешь правую ягодицу, и анальное колечко послушно тянется за ней. Похоже, Паппи не впервой заниматься этим.' + LineEnding +
  497. 'Ты приставляешь головку члена к анусу девушки. Ты собираешь слюну во рту, наклоняешься и даёшь ей стечь в ложбинку в месте стыка.');
  498. 1: writeln(
  499. 'Ты делаешь несколько толчков, приноравливаясь к сфинктеру. Кажется, с каждым разом он пропускает тебя чуть глубже, но в целом остаётся неприступным.' + LineEnding +
  500. 'Осмелев, ты решительно обхватываешь таз девушки руками и настойчиво, теперь уже не прерываясь, проталкиваешь член внутрь. После первых сантиметров он с неожиданной лёгкостью проходит на всю длину.' + LineEnding +
  501. 'Ты начинаешь фрикции, то и дело шлёпая по ягодицам.' + LineEnding +
  502. 'Через пару минут ты чувствуешь, что полностью освоился в прямой кишке. Тогда ты придерживаешь руками ягодицы Паппи в раздвинутом состоянии и — чпок! — достаёшь член, чтобы полюбоваться зияющим результатом своих действий.');
  503. 2: writeln(
  504. 'Ты погружаешь член обратно, теперь совершенно без усилий, и ускоряешь движения.' + LineEnding +
  505. 'Ты чувствуешь себя на пороге оргазма, делаешь последнее, самое глубокое погружение и начинаешь исторгать сперму вовнутрь.' + LineEnding +
  506. 'С последней её каплей живот Паппи едва слышно уркнул, словно проглатывая заряд.' + LineEnding +
  507. 'Похлопав по ягодицам вместо головы в знак похвалы, ты вытаскиваешь член. Анус уже не спешит закрываться и лишь подрагивает.');
  508. end;
  509. end;
  510.  
  511. procedure Scene_Anal.HandleCommands;
  512. begin
  513. case stage of
  514. 0: if Command('', 'Вставить.') then inc(stage);
  515. 1: if Command('', 'Продолжить и кончить.') then inc(stage);
  516. 2: if Command('', 'Подняться.') then NoteSexEpisodeAndReturn(world, Sex_Anal);
  517. end;
  518. end;
  519.  
  520. procedure Scene_CantOpen.HandleDisplay;
  521. begin
  522. writeln('Дверь не поддаётся.');
  523. end;
  524.  
  525. procedure Scene_CantOpen.HandleCommands;
  526. begin
  527. if Command('', 'Отойти.') then world.SwitchTo(Scene_Girl.Create({comeFromFar} false));
  528. end;
  529.  
  530. procedure Scene_DoorOpeningSound.HandleDisplay;
  531. begin
  532. writeln('Ты слышишь щелчок открывающейся замочной скважины.');
  533. end;
  534.  
  535. procedure Scene_DoorOpeningSound.HandleCommands;
  536. begin
  537. if Command('', 'Продолжить.') then world.SwitchTo(Scene_Girl.Create({comeFromFar} false));
  538. end;
  539.  
  540. procedure Scene_DoorEntry.HandleDisplay;
  541. begin
  542. writeln(
  543. 'Ты открываешь тяжёлую дверь и ступаешь внутрь. Неширокая пологая лестница ведёт вниз, закругляясь.' + LineEnding +
  544. 'Стена слева освещена факелами, горящими странным холодным огнём. Поодаль в стене виднеются двери и ответвления.' + LineEnding +
  545. 'Справа от лестницы пропасть. Твои глаза, привыкающие к полутьме, видят далеко на её дне что-то мерцающее в рассеянном свете факелов.' + LineEnding +
  546. 'Присмотревшись получше, ты видишь вдалеке над пропастью ряды едва заметных точек — по-видимому, таких же факелов. Похоже, лестница идёт по гигантской спирали.' + LineEnding +
  547. '' + LineEnding +
  548. 'Вдруг ты слышишь быстрый, приближающийся звук шагов.' + LineEnding +
  549. '«Я НЕ ДЛЯ ТЕБЯ ЗДЕСЬ ЛЕЖАЛА! Я ЖДАЛА ЧЭДА!»');
  550. end;
  551.  
  552. procedure Scene_DoorEntry.HandleCommands;
  553. begin
  554. if Command('1', 'Обернуться.') then world.SwitchTo(Scene_GirlRevenge1.Create);
  555. if Command('2', 'Не оборачиваться.') then world.SwitchTo(Scene_GirlRevenge2.Create);
  556. end;
  557.  
  558. procedure Scene_GirlRevenge1.HandleDisplay;
  559. begin
  560. case stage of
  561. 0: writeln(
  562. 'Ты решаешься обернуться и твёрдо взглянуть в глаза своей новой суженой.' + LineEnding +
  563. 'Она, роняя слёзы, влетает на лестницу и бросает тебе в голову булыжник.' + LineEnding +
  564. 'Ты машинально отпрыгиваешь влево — и спиной вниз летишь в пропасть.');
  565. 1: writeln(
  566. 'Пара секунд невесомости, и ты отключаешься от адской боли.' + LineEnding +
  567. 'Очнувшись, ты обнаруживаешь себя насаженным в падении на пару зазубренных пик. По-видимому, именно они и составляли дно пропасти.' + LineEnding +
  568. 'К сожалению, на зазубринах осталась часть твоего органокомплекса, и у тебя нет ни единого шанса.' + LineEnding +
  569. 'Вдали ты видишь силуэт девушки, один её глаз светится красной точкой.' + LineEnding +
  570. 'Ты загипнотизированно смотришь на него и чувствуешь, как кровотечение останавливается. Теперь ты умрёшь ещё не через один час.' + LineEnding +
  571. '' + LineEnding +
  572. '<КОНЕЦ>');
  573. end;
  574. end;
  575.  
  576. procedure Scene_GirlRevenge1.HandleCommands;
  577. begin
  578. case stage of
  579. 0: if Command('', 'Падать...') then inc(stage);
  580. end;
  581. end;
  582.  
  583. function Scene_GirlRevenge1.HandleFlags: FlagSet;
  584. begin
  585. case stage of
  586. 1: result := [Scene_IsEnding];
  587. else result := [];
  588. end;
  589. end;
  590.  
  591. procedure Scene_GirlRevenge2.HandleDisplay;
  592. begin
  593. writeln(
  594. 'Твоя спина холодеет, но ты быстро идёшь вперёд, не оборачиваясь.' + LineEnding +
  595. 'После нескольких преодолённых тобой ступенек дверь начинает быстро захлопываться. От неожиданности девушка спотыкается и на всей скорости вмазывается в неё головой.' + LineEnding +
  596. '' + LineEnding +
  597. 'Хруст с характерным хлюпанием — звук расколовшегося черепа — последнее, что ты слышишь, прежде чем дверь окончательно захлопывается и сливается со стеной, отрезая тебе путь назад.' + LineEnding +
  598. 'Тебе становится грустно. Ты возвращаешься к месту прежней двери, прикладываешь ладонь и долго стоишь молча, вспоминая ваше короткое знакомство.' + LineEnding +
  599. 'Встряхнувшись, ты разворачиваешься и решительно шагаешь вниз, в неизвестность.' + LineEnding +
  600. '' + LineEnding +
  601. '<КОНЕЦ>');
  602. end;
  603.  
  604. function Scene_GirlRevenge2.HandleFlags: FlagSet;
  605. begin
  606. result := [Scene_IsEnding];
  607. end;
  608.  
  609. {$ifdef demonstrate}
  610. type
  611. TUnicodeStringArray = array of unicodestring;
  612. TArrayOfUnicodeStringArray = array of TUnicodeStringArray;
  613. {$endif}
  614.  
  615. var
  616. world: TWorld;
  617. worldRef: Reference;
  618. cmd: unicodestring;
  619. {$ifdef demonstrate}
  620. scenarios: TArrayOfUnicodeStringArray;
  621. iScenario: SizeInt;
  622. {$endif}
  623.  
  624. begin
  625. {$ifdef demonstrate}
  626. // сценарии для ideone
  627. scenarios := TArrayOfUnicodeStringArray.Create
  628. (
  629. TUnicodeStringArray.Create('1', '0', ''), // концовка 1
  630. TUnicodeStringArray.Create('1', '1', '', '1', '', '', '', '1', '', '', '', '1', '', '', '', '', '1', '1', '', ''), // концовка 2
  631. TUnicodeStringArray.Create('1', '1', '', '1', '', '', '', '1', '', '', '', '1', '', '', '', '', '1', '2', '') // концовка 3
  632. );
  633. for iScenario := 0 to High(scenarios) do
  634. begin
  635. writeln('--- Сценарий ', 1 + iScenario, ' / ', length(scenarios), ' ---');
  636. writeln;
  637. world := TWorld.Create(Scene_Prologue.Create);
  638. worldRef := world;
  639. for cmd in scenarios[iScenario] do
  640. begin
  641. world.Display;
  642. writeln(cmd);
  643. world.SendCommand(cmd);
  644. end;
  645. end;
  646. {$else}
  647. // интерактив
  648. world := TWorld.Create(Scene_Prologue.Create);
  649. worldRef := world;
  650. while world.Alive do
  651. begin
  652. world.Display;
  653. readln(cmd);
  654. world.SendCommand(cmd);
  655. end;
  656. {$endif}
  657. end.
Success #stdin #stdout 0s 5412KB
stdin
Standard input is empty
stdout
--- Сценарий 1 / 3 ---

В древней книге ты прочитал о Подземелье Дырача, которое даст славу и могущество тому, кто его пройдёт.
Когда ты приплыл по координатам, загадочный остров возник из ниоткуда.
Ты спускаешься на берег.

(1) Исследовать остров.
(0) Покинуть остров.

> 1

В сотне метров от берега виднеется витражный купол.
Подойдя ближе, ты видишь каменную площадку и дверь, высеченную в скале.
На двери нарисован треугольник, концы трёх стрелок направлены к его вершинам извне.

В центре площадки лежит голая Паппи. Похоже, она без сознания.
В углу сидит Петухисса в смирительной рубашке и бьётся лбом о каменную ограду. Глухой стук отмеряет время.

(1) Подойти к Петухиссе.
(2) Трахнуть Паппи в рот.
(3) Трахнуть в вагину.
(4) Трахнуть в анус.
(5) Открыть дверь.
(0) Покинуть остров.

> 0

Испуганный, ты развернулся и побежал к кораблю. Ты отплыл от острова, но так и не вернулся домой.

<КОНЕЦ>

--- Сценарий 2 / 3 ---

В древней книге ты прочитал о Подземелье Дырача, которое даст славу и могущество тому, кто его пройдёт.
Когда ты приплыл по координатам, загадочный остров возник из ниоткуда.
Ты спускаешься на берег.

(1) Исследовать остров.
(0) Покинуть остров.

> 1

В сотне метров от берега виднеется витражный купол.
Подойдя ближе, ты видишь каменную площадку и дверь, высеченную в скале.
На двери нарисован треугольник, концы трёх стрелок направлены к его вершинам извне.

В центре площадки лежит голая Паппи. Похоже, она без сознания.
В углу сидит Петухисса в смирительной рубашке и бьётся лбом о каменную ограду. Глухой стук отмеряет время.

(1) Подойти к Петухиссе.
(2) Трахнуть Паппи в рот.
(3) Трахнуть в вагину.
(4) Трахнуть в анус.
(5) Открыть дверь.
(0) Покинуть остров.

> 1

Ты подходишь к Петухиссе, плешивому мужичку лет пятидесяти на вид.
Исступлённые удары головой оказались молитвой выцарапанному на камне изображению лисы, какой её мог бы нарисовать ребёнок с ДЦП.
Ты вспоминаешь, как твой дед чуть не лишился уха в схватке с таким же шизофреником, и инстинктивно отскакиваешь.
Петухисса оборачивается на звук и замечает твоё искажённое отвращением лицо:
«Ага, хейтерок! Подрочил на меня? Подрочил?»

<ENTER> Больше не подходить.

Ты видишь каменную площадку и дверь, высеченную в скале.
На двери нарисован треугольник, концы трёх стрелок направлены к его вершинам извне.

В центре площадки лежит голая Паппи. Похоже, она без сознания.
Доносится бессвязное бормотание Петухиссы. Возможно, до помешательства у него была заебавшая семья и бесполезная работа, от которых он бежал сюда. Но Подземелье Дырача не щадит слабых духом.

(1) Трахнуть Паппи в рот.
(2) Трахнуть в вагину.
(3) Трахнуть в анус.
(4) Открыть дверь.
(0) Покинуть остров.

> 1

Губы Паппи манят тебя. Ты приближаешься, чтобы облизнуть их, и чувствуешь её слабое дыхание.
Ты не ощущаешь сопротивления, проникая языком в её рот. Твой член поднимается.
Ты завершаешь поцелуй и придвигаешься бёдрами.
Придерживая голову девушки, ты прижимаешь член к её губам. Они распахиваются вслед за приоткрывшейся челюстью и принимают его внутрь.
Ты начинаешь двигаться. Основание члена ритмично скользит по её податливому языку, а головка тычется в мягкое нёбо.

<ENTER> Продолжать.

Не вытаскивая члена, ты разворачиваешься и утыкаешься лбом в промежность Паппи. Она слабо пахнет морскими водорослями.
Ты обхватываешь бёдра девушки руками и с усилием просовываешь член ей в глотку. Её горло сводит судорога.
Ты остаёшься неподвижен и прислушиваешься к ощущениям, пока её горло расслабляется.
Ты постепенно возобновляешь движения, и через минуту уже, сквозь слюни и сбивающееся дыхание, раз за разом топишь член в её глотке по самые яйца.

<ENTER> Кончить в горло.

После ещё нескольких толчков ты разряжаешься внутрь.
Перистальтика пищевода слабее, чем если бы Паппи была в сознании, но, так или иначе, большая часть спермы оказывается у неё в желудке.
Ты медленно вынимаешь обслюнявленный член из её рта.

<ENTER> Подняться.

Ты видишь каменную площадку и дверь, высеченную в скале.
На двери нарисован треугольник, концы трёх стрелок направлены к его вершинам извне.
Одна из стрелок выглядит выветренной.

В центре площадки лежит голая Паппи. Похоже, она без сознания.
Рот девушки блестит на солнце, пробивающемся сквозь купол.
Петухисса завороженно наблюдает за вами, позабыв о лисе. В его глазах загорелся огонёк, а ковидная маска пропиталась слюной.

(1) Трахнуть Паппи в вагину.
(2) Трахнуть в анус.
(3) Открыть дверь.
(0) Покинуть остров.

> 1

Ты спускаешься на колени перед промежностью Паппи.
В островке волос на её лобке застряли кристаллики соли.
Ты гладишь Паппи по нежной внутренней поверхности бёдер, и она постанывает сквозь забытьё.
Ты раздвигаешь половые губы девушки левой рукой, а двумя пальцами правой дразнишь вход во влагалище. Надавив сильнее, легко проскальзываешь ими вовнутрь и аккуратно растягиваешь в стороны. Ты видишь, как потревоженные стенки влагалища пульсируют, пытаясь вернуться к первоначальной форме.

<ENTER> Секс.

Со снова налитым кровью членом, ты запрокидываешь одну ногу Паппи себе на плечо.
Помогая свободной рукой, ты трёшься стволом члена вдоль её половых губ и клитора. Затем уверенно направляешь головку внутрь, и она утопает с хлюпанием смазки.
Ты кладёшь ладонь на живот девушки и совершаешь несколько пробных фрикций, постепенно увеличивая глубину.
Стенки влагалища плотно обхватывают тебя, но с готовностью поддаются твоим движениям.
Раззадоренный, ты запрокидываешь её вторую ногу, упираешься локтями в каменный пол и начинаешь бесцеремонно трахать, доставая аккурат до шейки матки в крайней точке амплитуды.
Купол заполняется похабными звуками соударения юных тел.

<ENTER> Полапать грудь + финал.

Устав держаться на весу, ты встаёшь на голени и разводишь ноги девушки в стороны.
Ты продолжаешь движения тазом. Грудь Паппи покачивается в такт, и ты алчно протягиваешь к ней руки. Ты впиваешься в неё пальцами; девушка в сознании вскрикнула бы от боли, но сейчас она лишь выдохнула сильнее обычного.
На пределе ты приподнимаешь Паппи за талию, погружаешь член до упора, и он, пульсируя, заполняет её горячим семенем.
На фоне разгорячённого дыхания девушки ты прислушиваешься к отголоскам оргазма, и наконец осторожно достаёшь свой полностью обмякший член.

<ENTER> Подняться.

Ты видишь каменную площадку и дверь, высеченную в скале.
На двери нарисован треугольник, концы трёх стрелок направлены к его вершинам извне.
Две из стрелок наполовину выветрились.

В центре площадки лежит голая Паппи. Похоже, она без сознания.
Рот девушки блестит на солнце, пробивающемся сквозь купол.
Её вагина зияет, из неё течёт струйка вязкой жидкости.
Петухисса трётся промежностью о выступ в стене.

(1) Трахнуть Паппи в анус.
(2) Открыть дверь.
(0) Покинуть остров.

> 1

Ты переворачиваешь Паппи на живот. Твоему взору открываются её спина и ягодицы.
Ты несколько раз звонко шлёпаешь по ягодицам, оставляя горящие отпечатки ладоней. Твой член давно рвётся ввысь снова.
Ты оттягиваешь правую ягодицу, и анальное колечко послушно тянется за ней. Похоже, Паппи не впервой заниматься этим.
Ты приставляешь головку члена к анусу девушки. Ты собираешь слюну во рту, наклоняешься и даёшь ей стечь в ложбинку в месте стыка.

<ENTER> Вставить.

Ты делаешь несколько толчков, приноравливаясь к сфинктеру. Кажется, с каждым разом он пропускает тебя чуть глубже, но в целом остаётся неприступным.
Осмелев, ты решительно обхватываешь таз девушки руками и настойчиво, теперь уже не прерываясь, проталкиваешь член внутрь. После первых сантиметров он с неожиданной лёгкостью проходит на всю длину.
Ты начинаешь фрикции, то и дело шлёпая по ягодицам.
Через пару минут ты чувствуешь, что полностью освоился в прямой кишке. Тогда ты придерживаешь руками ягодицы Паппи в раздвинутом состоянии и — чпок! — достаёшь член, чтобы полюбоваться зияющим результатом своих действий.

<ENTER> Продолжить и кончить.

Ты погружаешь член обратно, теперь совершенно без усилий, и ускоряешь движения.
Ты чувствуешь себя на пороге оргазма, делаешь последнее, самое глубокое погружение и начинаешь исторгать сперму вовнутрь.
С последней её каплей живот Паппи едва слышно уркнул, словно проглатывая заряд.
Похлопав по ягодицам вместо головы в знак похвалы, ты вытаскиваешь член. Анус уже не спешит закрываться и лишь подрагивает.

<ENTER> Подняться.

Ты слышишь щелчок открывающейся замочной скважины.

<ENTER> Продолжить.

Ты видишь каменную площадку и дверь, высеченную в скале.
Изображение треугольника почти выветрилось, его оставшиеся фрагменты окрасились тёмно-красным.

В центре площадки лежит голая Паппи. Она без сознания, но, кажется, стала более подвижной.
Ты сомневаешься, что она оценит твой дружеский вклад, поэтому не хочешь попадаться ей на глаза.
Рот девушки блестит на солнце, пробивающемся сквозь купол.
Анус и вагина зияют, из них натекла небольшая флуоресцирующая лужица.
Истощённый Петухисса падает без сил. Нельзя так напрягаться в его возрасте.

(1) Открыть дверь.
(0) Покинуть остров.

> 1

Ты открываешь тяжёлую дверь и ступаешь внутрь. Неширокая пологая лестница ведёт вниз, закругляясь.
Стена слева освещена факелами, горящими странным холодным огнём. Поодаль в стене виднеются двери и ответвления.
Справа от лестницы пропасть. Твои глаза, привыкающие к полутьме, видят далеко на её дне что-то мерцающее в рассеянном свете факелов.
Присмотревшись получше, ты видишь вдалеке над пропастью ряды едва заметных точек — по-видимому, таких же факелов. Похоже, лестница идёт по гигантской спирали.

Вдруг ты слышишь быстрый, приближающийся звук шагов.
«Я НЕ ДЛЯ ТЕБЯ ЗДЕСЬ ЛЕЖАЛА! Я ЖДАЛА ЧЭДА!»

(1) Обернуться.
(2) Не оборачиваться.

> 1

Ты решаешься обернуться и твёрдо взглянуть в глаза своей новой суженой.
Она, роняя слёзы, влетает на лестницу и бросает тебе в голову булыжник.
Ты машинально отпрыгиваешь влево — и спиной вниз летишь в пропасть.

<ENTER> Падать...

Пара секунд невесомости, и ты отключаешься от адской боли.
Очнувшись, ты обнаруживаешь себя насаженным в падении на пару зазубренных пик. По-видимому, именно они и составляли дно пропасти.
К сожалению, на зазубринах осталась часть твоего органокомплекса, и у тебя нет ни единого шанса.
Вдали ты видишь силуэт девушки, один её глаз светится красной точкой.
Ты загипнотизированно смотришь на него и чувствуешь, как кровотечение останавливается. Теперь ты умрёшь ещё не через один час.

<КОНЕЦ>

--- Сценарий 3 / 3 ---

В древней книге ты прочитал о Подземелье Дырача, которое даст славу и могущество тому, кто его пройдёт.
Когда ты приплыл по координатам, загадочный остров возник из ниоткуда.
Ты спускаешься на берег.

(1) Исследовать остров.
(0) Покинуть остров.

> 1

В сотне метров от берега виднеется витражный купол.
Подойдя ближе, ты видишь каменную площадку и дверь, высеченную в скале.
На двери нарисован треугольник, концы трёх стрелок направлены к его вершинам извне.

В центре площадки лежит голая Паппи. Похоже, она без сознания.
В углу сидит Петухисса в смирительной рубашке и бьётся лбом о каменную ограду. Глухой стук отмеряет время.

(1) Подойти к Петухиссе.
(2) Трахнуть Паппи в рот.
(3) Трахнуть в вагину.
(4) Трахнуть в анус.
(5) Открыть дверь.
(0) Покинуть остров.

> 1

Ты подходишь к Петухиссе, плешивому мужичку лет пятидесяти на вид.
Исступлённые удары головой оказались молитвой выцарапанному на камне изображению лисы, какой её мог бы нарисовать ребёнок с ДЦП.
Ты вспоминаешь, как твой дед чуть не лишился уха в схватке с таким же шизофреником, и инстинктивно отскакиваешь.
Петухисса оборачивается на звук и замечает твоё искажённое отвращением лицо:
«Ага, хейтерок! Подрочил на меня? Подрочил?»

<ENTER> Больше не подходить.

Ты видишь каменную площадку и дверь, высеченную в скале.
На двери нарисован треугольник, концы трёх стрелок направлены к его вершинам извне.

В центре площадки лежит голая Паппи. Похоже, она без сознания.
Доносится бессвязное бормотание Петухиссы. Возможно, до помешательства у него была заебавшая семья и бесполезная работа, от которых он бежал сюда. Но Подземелье Дырача не щадит слабых духом.

(1) Трахнуть Паппи в рот.
(2) Трахнуть в вагину.
(3) Трахнуть в анус.
(4) Открыть дверь.
(0) Покинуть остров.

> 1

Губы Паппи манят тебя. Ты приближаешься, чтобы облизнуть их, и чувствуешь её слабое дыхание.
Ты не ощущаешь сопротивления, проникая языком в её рот. Твой член поднимается.
Ты завершаешь поцелуй и придвигаешься бёдрами.
Придерживая голову девушки, ты прижимаешь член к её губам. Они распахиваются вслед за приоткрывшейся челюстью и принимают его внутрь.
Ты начинаешь двигаться. Основание члена ритмично скользит по её податливому языку, а головка тычется в мягкое нёбо.

<ENTER> Продолжать.

Не вытаскивая члена, ты разворачиваешься и утыкаешься лбом в промежность Паппи. Она слабо пахнет морскими водорослями.
Ты обхватываешь бёдра девушки руками и с усилием просовываешь член ей в глотку. Её горло сводит судорога.
Ты остаёшься неподвижен и прислушиваешься к ощущениям, пока её горло расслабляется.
Ты постепенно возобновляешь движения, и через минуту уже, сквозь слюни и сбивающееся дыхание, раз за разом топишь член в её глотке по самые яйца.

<ENTER> Кончить в горло.

После ещё нескольких толчков ты разряжаешься внутрь.
Перистальтика пищевода слабее, чем если бы Паппи была в сознании, но, так или иначе, большая часть спермы оказывается у неё в желудке.
Ты медленно вынимаешь обслюнявленный член из её рта.

<ENTER> Подняться.

Ты видишь каменную площадку и дверь, высеченную в скале.
На двери нарисован треугольник, концы трёх стрелок направлены к его вершинам извне.
Одна из стрелок выглядит выветренной.

В центре площадки лежит голая Паппи. Похоже, она без сознания.
Рот девушки блестит на солнце, пробивающемся сквозь купол.
Петухисса завороженно наблюдает за вами, позабыв о лисе. В его глазах загорелся огонёк, а ковидная маска пропиталась слюной.

(1) Трахнуть Паппи в вагину.
(2) Трахнуть в анус.
(3) Открыть дверь.
(0) Покинуть остров.

> 1

Ты спускаешься на колени перед промежностью Паппи.
В островке волос на её лобке застряли кристаллики соли.
Ты гладишь Паппи по нежной внутренней поверхности бёдер, и она постанывает сквозь забытьё.
Ты раздвигаешь половые губы девушки левой рукой, а двумя пальцами правой дразнишь вход во влагалище. Надавив сильнее, легко проскальзываешь ими вовнутрь и аккуратно растягиваешь в стороны. Ты видишь, как потревоженные стенки влагалища пульсируют, пытаясь вернуться к первоначальной форме.

<ENTER> Секс.

Со снова налитым кровью членом, ты запрокидываешь одну ногу Паппи себе на плечо.
Помогая свободной рукой, ты трёшься стволом члена вдоль её половых губ и клитора. Затем уверенно направляешь головку внутрь, и она утопает с хлюпанием смазки.
Ты кладёшь ладонь на живот девушки и совершаешь несколько пробных фрикций, постепенно увеличивая глубину.
Стенки влагалища плотно обхватывают тебя, но с готовностью поддаются твоим движениям.
Раззадоренный, ты запрокидываешь её вторую ногу, упираешься локтями в каменный пол и начинаешь бесцеремонно трахать, доставая аккурат до шейки матки в крайней точке амплитуды.
Купол заполняется похабными звуками соударения юных тел.

<ENTER> Полапать грудь + финал.

Устав держаться на весу, ты встаёшь на голени и разводишь ноги девушки в стороны.
Ты продолжаешь движения тазом. Грудь Паппи покачивается в такт, и ты алчно протягиваешь к ней руки. Ты впиваешься в неё пальцами; девушка в сознании вскрикнула бы от боли, но сейчас она лишь выдохнула сильнее обычного.
На пределе ты приподнимаешь Паппи за талию, погружаешь член до упора, и он, пульсируя, заполняет её горячим семенем.
На фоне разгорячённого дыхания девушки ты прислушиваешься к отголоскам оргазма, и наконец осторожно достаёшь свой полностью обмякший член.

<ENTER> Подняться.

Ты видишь каменную площадку и дверь, высеченную в скале.
На двери нарисован треугольник, концы трёх стрелок направлены к его вершинам извне.
Две из стрелок наполовину выветрились.

В центре площадки лежит голая Паппи. Похоже, она без сознания.
Рот девушки блестит на солнце, пробивающемся сквозь купол.
Её вагина зияет, из неё течёт струйка вязкой жидкости.
Петухисса трётся промежностью о выступ в стене.

(1) Трахнуть Паппи в анус.
(2) Открыть дверь.
(0) Покинуть остров.

> 1

Ты переворачиваешь Паппи на живот. Твоему взору открываются её спина и ягодицы.
Ты несколько раз звонко шлёпаешь по ягодицам, оставляя горящие отпечатки ладоней. Твой член давно рвётся ввысь снова.
Ты оттягиваешь правую ягодицу, и анальное колечко послушно тянется за ней. Похоже, Паппи не впервой заниматься этим.
Ты приставляешь головку члена к анусу девушки. Ты собираешь слюну во рту, наклоняешься и даёшь ей стечь в ложбинку в месте стыка.

<ENTER> Вставить.

Ты делаешь несколько толчков, приноравливаясь к сфинктеру. Кажется, с каждым разом он пропускает тебя чуть глубже, но в целом остаётся неприступным.
Осмелев, ты решительно обхватываешь таз девушки руками и настойчиво, теперь уже не прерываясь, проталкиваешь член внутрь. После первых сантиметров он с неожиданной лёгкостью проходит на всю длину.
Ты начинаешь фрикции, то и дело шлёпая по ягодицам.
Через пару минут ты чувствуешь, что полностью освоился в прямой кишке. Тогда ты придерживаешь руками ягодицы Паппи в раздвинутом состоянии и — чпок! — достаёшь член, чтобы полюбоваться зияющим результатом своих действий.

<ENTER> Продолжить и кончить.

Ты погружаешь член обратно, теперь совершенно без усилий, и ускоряешь движения.
Ты чувствуешь себя на пороге оргазма, делаешь последнее, самое глубокое погружение и начинаешь исторгать сперму вовнутрь.
С последней её каплей живот Паппи едва слышно уркнул, словно проглатывая заряд.
Похлопав по ягодицам вместо головы в знак похвалы, ты вытаскиваешь член. Анус уже не спешит закрываться и лишь подрагивает.

<ENTER> Подняться.

Ты слышишь щелчок открывающейся замочной скважины.

<ENTER> Продолжить.

Ты видишь каменную площадку и дверь, высеченную в скале.
Изображение треугольника почти выветрилось, его оставшиеся фрагменты окрасились тёмно-красным.

В центре площадки лежит голая Паппи. Она без сознания, но, кажется, стала более подвижной.
Ты сомневаешься, что она оценит твой дружеский вклад, поэтому не хочешь попадаться ей на глаза.
Рот девушки блестит на солнце, пробивающемся сквозь купол.
Анус и вагина зияют, из них натекла небольшая флуоресцирующая лужица.
Истощённый Петухисса падает без сил. Нельзя так напрягаться в его возрасте.

(1) Открыть дверь.
(0) Покинуть остров.

> 1

Ты открываешь тяжёлую дверь и ступаешь внутрь. Неширокая пологая лестница ведёт вниз, закругляясь.
Стена слева освещена факелами, горящими странным холодным огнём. Поодаль в стене виднеются двери и ответвления.
Справа от лестницы пропасть. Твои глаза, привыкающие к полутьме, видят далеко на её дне что-то мерцающее в рассеянном свете факелов.
Присмотревшись получше, ты видишь вдалеке над пропастью ряды едва заметных точек — по-видимому, таких же факелов. Похоже, лестница идёт по гигантской спирали.

Вдруг ты слышишь быстрый, приближающийся звук шагов.
«Я НЕ ДЛЯ ТЕБЯ ЗДЕСЬ ЛЕЖАЛА! Я ЖДАЛА ЧЭДА!»

(1) Обернуться.
(2) Не оборачиваться.

> 2

Твоя спина холодеет, но ты быстро идёшь вперёд, не оборачиваясь.
После нескольких преодолённых тобой ступенек дверь начинает быстро захлопываться. От неожиданности девушка спотыкается и на всей скорости вмазывается в неё головой.

Хруст с характерным хлюпанием — звук расколовшегося черепа — последнее, что ты слышишь, прежде чем дверь окончательно захлопывается и сливается со стеной, отрезая тебе путь назад.
Тебе становится грустно. Ты возвращаешься к месту прежней двери, прикладываешь ладонь и долго стоишь молча, вспоминая ваше короткое знакомство.
Встряхнувшись, ты разворачиваешься и решительно шагаешь вниз, в неизвестность.

<КОНЕЦ>