daily pastebin goal
1%
SHARE
TWEET

Untitled

a guest Sep 17th, 2018 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # CLASS: main_header
  2. Доисторическая схватка
  3. # IMAGE: images/logo.gif|Вступительная анимация с охотником у костра под деревом
  4. Если вы готовы, то выберите
  5. *   [Начать]
  6.     Лёгкий ветерок над пустынной равниной дарит небольшую прохладу после знойного дня. Охотник прислонился к стволу дерева и спокойно наблюдает за магическим пламенем. В этот год ему удасться сохранить его, если неподалёку отыщется еще несколько деревьев. Верное копьё, с каменным наконечником лежит возле левой ноги. Небольшой шорох из ближайших кустов и уже его руки крепко сжимают древко. Только не это, кажется на этой небогатой земле появился еще один охотник - не знающий пощады. Зубастая морда высунулась из-за кустов и начался древнейший танец смерти.
  7.     -> init_and_start_knot
  8. -> END
  9.  
  10. //Узел для инициализации значений переменных
  11. === init_and_start_knot ===
  12. //Текущие состояния объектов игры
  13. LIST hero_state_list = far_tree, near_tree, up_tree
  14. VAR hero_state = far_tree
  15. LIST dino_state_list = dino_visible, dino_hidden, dino_run
  16. VAR dino_state = dino_visible
  17. LIST pike_state_list = pike_in_hands, pike_on_land
  18. VAR pike_state = pike_in_hands
  19. LIST action_list = cmd_wait, cmd_throw, cmd_up, cmd_hit
  20. VAR was_hit_tree = false //признак удара по ветке (когда над ней)
  21. VAR is_end = false //признак окончания игры
  22. //Константы для удобства вычитки и редактирования
  23. CONST T_NOT_WORK =          "Не сработало. "
  24. CONST T_HUNTER_WAIT =       "Охотник немного подождал. "
  25. CONST T_THROW_FAILED =      "Охотник не может подобрать удобную позицию чтобы метнуть копьё, зверюга очень изворотливая."
  26. CONST T_THROW_BLIND =       "Присмотревшись к кустам, охотник понимает, что вслепую атаковать бессмысленно."
  27. CONST T_COME_CLOSER =       "Пока динозавр скрывался охотник тихонько подкрался ближе к стволу дерева."
  28. CONST T_TREE_BLOCKED =      "Динозавр не даёт влезть на дерево!"
  29. CONST T_TREE_BRANCH_FAR =   "Над костром проходит только кончик ветки. Когда охотник по нему стукнул, пара листьев упала в костёр."
  30. CONST T_THROW_COMPLITED =   "Охотник со всей силы бросил копьё, но динозавр успел увернуться и от страха убежал."
  31. CONST T_TAKE_PIKE =         "Чтобы еще раз метнуть копьё охотник выждал удобный момент и бросился за костёр, вырвав из земли оружие."
  32. CONST T_CLIMB_COMPLETED =   "Динозавр как ни пытался схватить лезущего вверх охотника, эму это не удалось."
  33. CONST T_DINO_STRIKE =       "Рык и свирепые броски монстра заставили охотника отойти за костёр."
  34. CONST T_TREE_BRANCH_CLOSER ="Над охотником проходит мощный ствол, но кажется он немного надломлен, снизу ничего не сделать."
  35. CONST T_TREE_HIT_FIRST =    "Сильно ударив ногой по ветке,послышался хруст, но охотник не удержался и упал на землю. Быстро опомнившись, он подбежал к копью и выставил его против зверя."
  36. CONST T_TREE_HIT_SECOND =   "Второй удар по ветке заставил вспыхнуть костёр, который опалив динозавра обратил его в бегство. Путь свободен, победа!"
  37. CONST T_CLIMB_UPPER =       "Когда охотник начал лезть выше по гладкому стволу, его рука соскользнула и он потерял равновесие, пришлось бросить горсть земли в сторону врага и быстро убежать за костёр."
  38. CONST T_WAIT_ON_TREE =      "Охотник решил притаиться на дереве, но когда пара когтей полоснула его по ноге, пришлось спрыгнуть и отступить за костер."
  39. CONST T_TAKE_PIKE_ON_TREE = "Копьё находилось за костром. Охотнику пришлось быстро пробежаться по ветке и мощным прыжком перемахнуть через костёр."
  40.  
  41. CONST T_STATE_HERO_FAR =    "Охотник сквозь пламя костра видит раскидистое дерево."
  42. CONST T_STATE_HERO_NEAR =   "Охотник стоит под деревом."
  43. CONST T_STATE_HERO_ON_TREE ="Охотник на дереве, крепко держится за ствол."
  44. CONST T_STATE_DINO_VISIBLE ="Динозавр рычит и скребёт когтями."
  45. CONST T_STATE_DINO_HIDDEN = "Динозавр прыгнул в ближайшие кусты и поджидает другую добычу."
  46. CONST T_STATE_DINO_RUN =    "Динозавра не видно после метания копья."
  47. CONST T_STATE_PIKE_IN_HANDS="В руках охотник крепко сжимает копьё."
  48. CONST T_STATE_PIKE_ON_LAND ="Копье торчит в земле неподалёку от костра."
  49.  
  50. CONST T_FIN_TEXT ="После долгих месяцев скитаний охотник нашёл свою судьбу."
  51.  
  52.  
  53. ->game_knot
  54.  
  55. //Узел игры
  56. === game_knot ===
  57. {is_end:
  58.    # IMAGE: images/woman_fin.jpg|Финальная заставка - девушка сидит спиной с оголённым плечом
  59.    # CLASS: end
  60.    {T_FIN_TEXT}
  61.    -> END
  62. }
  63. {print_hero_state(hero_state)} <>
  64. {print_dino_state(dino_state)} <>
  65. {print_pike_state(pike_state)}
  66.  
  67. + [Ждать]
  68.     {update_states(cmd_wait)}
  69.     ->game_knot
  70. + [Метнуть копьё]
  71.     {update_states(cmd_throw)}
  72.     ->game_knot
  73. + [Лезть на дерево]
  74.     {update_states(cmd_up)}
  75.     ->game_knot
  76. + [Ударить ветку]
  77.     {update_states(cmd_hit)}
  78.     ->game_knot
  79. -> END
  80.  
  81. //Функция обработчик состояний
  82. === function update_states(cmd_type)
  83. //По умолчанию выдаём отклик, похожий на инстед-реализацию
  84. ~ temp action_result = T_NOT_WORK
  85. //Запоминаем текущие состояния, чтобы автоматы работали параллельно, при изменении в ходе обработки
  86. ~ temp curr_dino_state = dino_state
  87. ~ temp curr_pike_state = pike_state
  88. ~ temp curr_hero_state = hero_state
  89.  
  90. {cmd_type == cmd_wait:
  91.     ~action_result = T_HUNTER_WAIT
  92. }
  93. //Обновляем динозавра
  94. {
  95. -dino_state == dino_visible:
  96.     //Если бросаем копье, когда динозавр видим, то он убегает, иначе он просто скрывается
  97.     {curr_hero_state == near_tree && cmd_type == cmd_throw:
  98.         ~dino_state = dino_run
  99.     -else:
  100.         ~dino_state = dino_hidden
  101.     }
  102.     {curr_hero_state != near_tree && cmd_type == cmd_throw:
  103.         ~action_result = T_THROW_FAILED
  104.     }
  105. -else:
  106.     {cmd_type == cmd_throw:
  107.         ~action_result = T_THROW_BLIND
  108.     }
  109.     //динозавр снова на виду
  110.     ~dino_state = dino_visible
  111. }
  112.  
  113. //Обновляем героя
  114. {
  115. -curr_hero_state == far_tree:
  116.     {
  117.     //Переходим к дереву, если пытаемся влезть на дерево, а дино нет на месте
  118.     -cmd_type == cmd_up && curr_dino_state != dino_visible:
  119.         ~hero_state = near_tree
  120.         ~action_result = T_COME_CLOSER
  121.    
  122.     -cmd_type == cmd_up && curr_dino_state == dino_visible:
  123.         ~action_result = T_TREE_BLOCKED
  124.    
  125.     -cmd_type == cmd_hit:
  126.         ~action_result = T_TREE_BRANCH_FAR
  127.    
  128.     }
  129. -curr_hero_state == near_tree:
  130.     {
  131.         //При броске копья оставляем его на другой стороне
  132.         -cmd_type == cmd_throw && curr_pike_state == pike_in_hands:
  133.            ~pike_state = pike_on_land
  134.            ~action_result = T_THROW_COMPLITED
  135.            
  136.         //Если пытаемся еще раз бросить, то переходим за костер и берем в руки
  137.         -cmd_type == cmd_throw && curr_pike_state == pike_on_land:
  138.            ~pike_state = pike_in_hands
  139.            ~action_result = T_TAKE_PIKE
  140.        
  141.         //Залезаем на дерево, когда динозавр убежал от копья
  142.         -cmd_type == cmd_up && curr_dino_state == dino_run:
  143.            ~hero_state = up_tree
  144.            ~action_result = T_CLIMB_COMPLETED
  145.            
  146.         //Возвращаемся за костёр, если увидели динозавра
  147.         -(cmd_type == cmd_wait || cmd_type == cmd_up) && curr_dino_state == dino_visible:
  148.             ~hero_state = far_tree
  149.             ~action_result = T_DINO_STRIKE
  150.        
  151.         -cmd_type == cmd_hit:
  152.             ~action_result = T_TREE_BRANCH_CLOSER
  153.     }
  154. -curr_hero_state == up_tree:
  155.     {
  156.         //Запоминаем попытку удара по дереву
  157.         -cmd_type == cmd_hit && was_hit_tree==false:
  158.             ~was_hit_tree =true
  159.             ~hero_state = far_tree
  160.             ~pike_state = pike_in_hands
  161.             ~action_result = T_TREE_HIT_FIRST
  162.         -cmd_type == cmd_hit && was_hit_tree==true:
  163.             ~is_end = true
  164.             ~action_result = T_TREE_HIT_SECOND
  165.         -cmd_type == cmd_up:
  166.             ~hero_state = far_tree
  167.             ~action_result = T_CLIMB_UPPER
  168.         -cmd_type == cmd_wait:
  169.             ~hero_state = far_tree
  170.             ~action_result = T_WAIT_ON_TREE
  171.         -cmd_type == cmd_throw:
  172.             ~hero_state = far_tree
  173.             ~action_result = T_TAKE_PIKE_ON_TREE
  174.     }
  175. }
  176.  
  177. ~return action_result
  178.  
  179. //Состояния героя
  180. === function print_hero_state(state) ===
  181. {
  182.     - state == far_tree:
  183.         ~ return T_STATE_HERO_FAR
  184.     - state == near_tree:
  185.         ~ return T_STATE_HERO_NEAR
  186.     - state == up_tree:
  187.         ~ return T_STATE_HERO_ON_TREE
  188. }
  189.  
  190. //Состояния динозавра
  191. === function print_dino_state(state) ===
  192. {
  193.     - state == dino_visible:
  194.         ~ return T_STATE_DINO_VISIBLE
  195.     - state == dino_hidden:
  196.         ~ return T_STATE_DINO_HIDDEN
  197.     - state == dino_run:
  198.         ~ return T_STATE_DINO_RUN
  199. }
  200.  
  201. //Состояния копья
  202. === function print_pike_state(state) ===
  203. {
  204.     - state == pike_in_hands:
  205.         ~ return T_STATE_PIKE_IN_HANDS
  206.     - state == pike_on_land:
  207.         ~ return T_STATE_PIKE_ON_LAND
  208. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top