@hytopia.com/examples 1.0.27 → 1.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/frontiers-rpg-game/assets/avatars/bookshelf.png +0 -0
  2. package/frontiers-rpg-game/assets/avatars/gravekeeper.png +0 -0
  3. package/frontiers-rpg-game/assets/avatars/herder.png +0 -0
  4. package/frontiers-rpg-game/assets/blocks/bricks.png +0 -0
  5. package/frontiers-rpg-game/assets/blocks/clay.png +0 -0
  6. package/frontiers-rpg-game/assets/blocks/coal-ore.png +0 -0
  7. package/frontiers-rpg-game/assets/blocks/cobblestone-mossy.png +0 -0
  8. package/frontiers-rpg-game/assets/blocks/cobblestone.png +0 -0
  9. package/frontiers-rpg-game/assets/blocks/creep.png +0 -0
  10. package/frontiers-rpg-game/assets/blocks/diamond-ore.png +0 -0
  11. package/frontiers-rpg-game/assets/blocks/emerald-block.png +0 -0
  12. package/frontiers-rpg-game/assets/blocks/emerald-ore.png +0 -0
  13. package/frontiers-rpg-game/assets/blocks/glass.png +0 -0
  14. package/frontiers-rpg-game/assets/blocks/gold-ore.png +0 -0
  15. package/frontiers-rpg-game/assets/blocks/green_fungus/+x.png +0 -0
  16. package/frontiers-rpg-game/assets/blocks/green_fungus/+y.png +0 -0
  17. package/frontiers-rpg-game/assets/blocks/green_fungus/+z.png +0 -0
  18. package/frontiers-rpg-game/assets/blocks/green_fungus/-x.png +0 -0
  19. package/frontiers-rpg-game/assets/blocks/green_fungus/-y.png +0 -0
  20. package/frontiers-rpg-game/assets/blocks/green_fungus/-z.png +0 -0
  21. package/frontiers-rpg-game/assets/blocks/log/+x.png +0 -0
  22. package/frontiers-rpg-game/assets/blocks/log/+y.png +0 -0
  23. package/frontiers-rpg-game/assets/blocks/log/+z.png +0 -0
  24. package/frontiers-rpg-game/assets/blocks/log/-x.png +0 -0
  25. package/frontiers-rpg-game/assets/blocks/log/-y.png +0 -0
  26. package/frontiers-rpg-game/assets/blocks/log/-z.png +0 -0
  27. package/frontiers-rpg-game/assets/blocks/mossy_dirt/+x.png +0 -0
  28. package/frontiers-rpg-game/assets/blocks/mossy_dirt/+y.png +0 -0
  29. package/frontiers-rpg-game/assets/blocks/mossy_dirt/+z.png +0 -0
  30. package/frontiers-rpg-game/assets/blocks/mossy_dirt/-x.png +0 -0
  31. package/frontiers-rpg-game/assets/blocks/mossy_dirt/-y.png +0 -0
  32. package/frontiers-rpg-game/assets/blocks/mossy_dirt/-z.png +0 -0
  33. package/frontiers-rpg-game/assets/blocks/murky-water.png +0 -0
  34. package/frontiers-rpg-game/assets/blocks/mushroom_top/+x.png +0 -0
  35. package/frontiers-rpg-game/assets/blocks/mushroom_top/+y.png +0 -0
  36. package/frontiers-rpg-game/assets/blocks/mushroom_top/+z.png +0 -0
  37. package/frontiers-rpg-game/assets/blocks/mushroom_top/-x.png +0 -0
  38. package/frontiers-rpg-game/assets/blocks/mushroom_top/-y.png +0 -0
  39. package/frontiers-rpg-game/assets/blocks/mushroom_top/-z.png +0 -0
  40. package/frontiers-rpg-game/assets/blocks/oak-planks-leafy.png +0 -0
  41. package/frontiers-rpg-game/assets/blocks/oak-planks-leafyer.png +0 -0
  42. package/frontiers-rpg-game/assets/blocks/oak-planks-leafyerer.png +0 -0
  43. package/frontiers-rpg-game/assets/blocks/sand.png +0 -0
  44. package/frontiers-rpg-game/assets/blocks/sandstone.png +0 -0
  45. package/frontiers-rpg-game/assets/blocks/shadowrock.png +0 -0
  46. package/frontiers-rpg-game/assets/blocks/snow-rough.png +0 -0
  47. package/frontiers-rpg-game/assets/blocks/snow.png +0 -0
  48. package/frontiers-rpg-game/assets/icons/items/brittle-nails.png +0 -0
  49. package/frontiers-rpg-game/assets/icons/items/chieftan-blade.png +0 -0
  50. package/frontiers-rpg-game/assets/icons/items/gold-ingot.png +0 -0
  51. package/frontiers-rpg-game/assets/icons/items/gorkin-ear.png +0 -0
  52. package/frontiers-rpg-game/assets/icons/items/gorkin-eye.png +0 -0
  53. package/frontiers-rpg-game/assets/icons/items/gorkin-foot.png +0 -0
  54. package/frontiers-rpg-game/assets/icons/items/gorkin-hand.png +0 -0
  55. package/frontiers-rpg-game/assets/icons/items/gorkin-skull.png +0 -0
  56. package/frontiers-rpg-game/assets/icons/items/healing-potion.png +0 -0
  57. package/frontiers-rpg-game/assets/icons/items/iron-chestplate.png +0 -0
  58. package/frontiers-rpg-game/assets/icons/items/iron-gauntlets.png +0 -0
  59. package/frontiers-rpg-game/assets/icons/items/iron-grieves.png +0 -0
  60. package/frontiers-rpg-game/assets/icons/items/iron-helmet.png +0 -0
  61. package/frontiers-rpg-game/assets/icons/items/iron-ingot.png +0 -0
  62. package/frontiers-rpg-game/assets/icons/items/iron-leggings.png +0 -0
  63. package/frontiers-rpg-game/assets/icons/items/shackle.png +0 -0
  64. package/frontiers-rpg-game/assets/icons/items/shattered-sword.png +0 -0
  65. package/frontiers-rpg-game/assets/icons/items/silver-slab.png +0 -0
  66. package/frontiers-rpg-game/assets/icons/items/tough-monster-hide.png +0 -0
  67. package/frontiers-rpg-game/assets/icons/items/weaver-carapace.png +0 -0
  68. package/frontiers-rpg-game/assets/icons/items/weaver-egg.png +0 -0
  69. package/frontiers-rpg-game/assets/icons/items/weaver-heart.png +0 -0
  70. package/frontiers-rpg-game/assets/icons/items/weaver-silk.png +0 -0
  71. package/frontiers-rpg-game/assets/icons/items/woolran-scroll.png +0 -0
  72. package/frontiers-rpg-game/assets/maps/chitter-forest.json +4769 -4779
  73. package/frontiers-rpg-game/assets/maps/hearthwilds.json +21381 -2612
  74. package/frontiers-rpg-game/assets/models/enemies/.optimized/angler/angler-named-nodes.bin +0 -0
  75. package/frontiers-rpg-game/assets/models/enemies/.optimized/angler/angler-named-nodes.gltf +5472 -0
  76. package/frontiers-rpg-game/assets/models/enemies/.optimized/angler/angler.bin +0 -0
  77. package/frontiers-rpg-game/assets/models/enemies/.optimized/angler/angler.gltf +4122 -0
  78. package/frontiers-rpg-game/assets/models/enemies/.optimized/angler/angler.gltf.md5 +1 -0
  79. package/frontiers-rpg-game/assets/models/enemies/.optimized/angler/baseColor.png +0 -0
  80. package/frontiers-rpg-game/assets/models/enemies/.optimized/blight-knight-ceres/baseColor.png +0 -0
  81. package/frontiers-rpg-game/assets/models/enemies/.optimized/blight-knight-ceres/blight-knight-ceres-named-nodes.bin +0 -0
  82. package/frontiers-rpg-game/assets/models/enemies/.optimized/blight-knight-ceres/blight-knight-ceres-named-nodes.gltf +17967 -0
  83. package/frontiers-rpg-game/assets/models/enemies/.optimized/blight-knight-ceres/blight-knight-ceres.bin +0 -0
  84. package/frontiers-rpg-game/assets/models/enemies/.optimized/blight-knight-ceres/blight-knight-ceres.gltf +17403 -0
  85. package/frontiers-rpg-game/assets/models/enemies/.optimized/blight-knight-ceres/blight-knight-ceres.gltf.md5 +1 -0
  86. package/frontiers-rpg-game/assets/models/enemies/.optimized/blighted-capfolk/baseColor.png +0 -0
  87. package/frontiers-rpg-game/assets/models/enemies/.optimized/blighted-capfolk/blighted-capfolk-named-nodes.bin +0 -0
  88. package/frontiers-rpg-game/assets/models/enemies/.optimized/blighted-capfolk/blighted-capfolk-named-nodes.gltf +1658 -0
  89. package/frontiers-rpg-game/assets/models/enemies/.optimized/blighted-capfolk/blighted-capfolk.bin +0 -0
  90. package/frontiers-rpg-game/assets/models/enemies/.optimized/blighted-capfolk/blighted-capfolk.gltf +1658 -0
  91. package/frontiers-rpg-game/assets/models/enemies/.optimized/blighted-capfolk/blighted-capfolk.gltf.md5 +1 -0
  92. package/frontiers-rpg-game/assets/models/enemies/.optimized/capfolk-guardian/baseColor.png +0 -0
  93. package/frontiers-rpg-game/assets/models/enemies/.optimized/capfolk-guardian/capfolk-guardian-named-nodes.bin +0 -0
  94. package/frontiers-rpg-game/assets/models/enemies/.optimized/capfolk-guardian/capfolk-guardian-named-nodes.gltf +9410 -0
  95. package/frontiers-rpg-game/assets/models/enemies/.optimized/capfolk-guardian/capfolk-guardian.bin +0 -0
  96. package/frontiers-rpg-game/assets/models/enemies/.optimized/capfolk-guardian/capfolk-guardian.gltf +4261 -0
  97. package/frontiers-rpg-game/assets/models/enemies/.optimized/capfolk-guardian/capfolk-guardian.gltf.md5 +1 -0
  98. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/baseColor_1.png +0 -0
  99. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/baseColor_2.png +0 -0
  100. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/gorkin-archer-named-nodes.bin +0 -0
  101. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/gorkin-archer-named-nodes.gltf +6093 -0
  102. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/gorkin-archer.bin +0 -0
  103. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/gorkin-archer.gltf +4430 -0
  104. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/gorkin-archer.gltf.md5 +1 -0
  105. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/baseColor_1.png +0 -0
  106. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/baseColor_2.png +0 -0
  107. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/gorkin-assassin-named-nodes.bin +0 -0
  108. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/gorkin-assassin-named-nodes.gltf +5441 -0
  109. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/gorkin-assassin.bin +0 -0
  110. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/gorkin-assassin.gltf +4084 -0
  111. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/gorkin-assassin.gltf.md5 +1 -0
  112. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-blademaster/baseColor.png +0 -0
  113. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-blademaster/gorkin-blademaster-named-nodes.bin +0 -0
  114. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-blademaster/gorkin-blademaster-named-nodes.gltf +5302 -0
  115. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-blademaster/gorkin-blademaster.bin +0 -0
  116. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-blademaster/gorkin-blademaster.gltf +4134 -0
  117. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-blademaster/gorkin-blademaster.gltf.md5 +1 -0
  118. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-chieftan/baseColor.png +0 -0
  119. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-chieftan/gorkin-chieftan-named-nodes.bin +0 -0
  120. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-chieftan/gorkin-chieftan-named-nodes.gltf +7052 -0
  121. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-chieftan/gorkin-chieftan.bin +0 -0
  122. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-chieftan/gorkin-chieftan.gltf +5581 -0
  123. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-chieftan/gorkin-chieftan.gltf.md5 +1 -0
  124. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-enforcer/baseColor.png +0 -0
  125. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-enforcer/gorkin-enforcer-named-nodes.bin +0 -0
  126. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-enforcer/gorkin-enforcer-named-nodes.gltf +4086 -0
  127. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-enforcer/gorkin-enforcer.bin +0 -0
  128. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-enforcer/gorkin-enforcer.gltf +3472 -0
  129. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-enforcer/gorkin-enforcer.gltf.md5 +1 -0
  130. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-grunt/baseColor.png +0 -0
  131. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-grunt/gorkin-grunt-named-nodes.bin +0 -0
  132. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-grunt/gorkin-grunt-named-nodes.gltf +3698 -0
  133. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-grunt/gorkin-grunt.bin +0 -0
  134. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-grunt/gorkin-grunt.gltf +3193 -0
  135. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-grunt/gorkin-grunt.gltf.md5 +1 -0
  136. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-hunter/baseColor.png +0 -0
  137. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-hunter/gorkin-hunter-named-nodes.bin +0 -0
  138. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-hunter/gorkin-hunter-named-nodes.gltf +3985 -0
  139. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-hunter/gorkin-hunter.bin +0 -0
  140. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-hunter/gorkin-hunter.gltf +3092 -0
  141. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-hunter/gorkin-hunter.gltf.md5 +1 -0
  142. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-shaman/baseColor.png +0 -0
  143. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-shaman/gorkin-shaman-named-nodes.bin +0 -0
  144. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-shaman/gorkin-shaman-named-nodes.gltf +3850 -0
  145. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-shaman/gorkin-shaman.bin +0 -0
  146. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-shaman/gorkin-shaman.gltf +3100 -0
  147. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-shaman/gorkin-shaman.gltf.md5 +1 -0
  148. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-swordsman/baseColor.png +0 -0
  149. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-swordsman/gorkin-swordsman-named-nodes.bin +0 -0
  150. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-swordsman/gorkin-swordsman-named-nodes.gltf +4087 -0
  151. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-swordsman/gorkin-swordsman.bin +0 -0
  152. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-swordsman/gorkin-swordsman.gltf +3582 -0
  153. package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-swordsman/gorkin-swordsman.gltf.md5 +1 -0
  154. package/frontiers-rpg-game/assets/models/enemies/.optimized/mother-viper/baseColor.png +0 -0
  155. package/frontiers-rpg-game/assets/models/enemies/.optimized/mother-viper/mother-viper-named-nodes.bin +0 -0
  156. package/frontiers-rpg-game/assets/models/enemies/.optimized/mother-viper/mother-viper-named-nodes.gltf +4212 -0
  157. package/frontiers-rpg-game/assets/models/enemies/.optimized/mother-viper/mother-viper.bin +0 -0
  158. package/frontiers-rpg-game/assets/models/enemies/.optimized/mother-viper/mother-viper.gltf +3993 -0
  159. package/frontiers-rpg-game/assets/models/enemies/.optimized/mother-viper/mother-viper.gltf.md5 +1 -0
  160. package/frontiers-rpg-game/assets/models/enemies/.optimized/reclusive-weaver/baseColor.png +0 -0
  161. package/frontiers-rpg-game/assets/models/enemies/.optimized/reclusive-weaver/reclusive-weaver-named-nodes.bin +0 -0
  162. package/frontiers-rpg-game/assets/models/enemies/.optimized/reclusive-weaver/reclusive-weaver-named-nodes.gltf +7978 -0
  163. package/frontiers-rpg-game/assets/models/enemies/.optimized/reclusive-weaver/reclusive-weaver.bin +0 -0
  164. package/frontiers-rpg-game/assets/models/enemies/.optimized/reclusive-weaver/reclusive-weaver.gltf +7978 -0
  165. package/frontiers-rpg-game/assets/models/enemies/.optimized/reclusive-weaver/reclusive-weaver.gltf.md5 +1 -0
  166. package/frontiers-rpg-game/assets/models/enemies/.optimized/sickly-capfolk/baseColor.png +0 -0
  167. package/frontiers-rpg-game/assets/models/enemies/.optimized/sickly-capfolk/sickly-capfolk-named-nodes.bin +0 -0
  168. package/frontiers-rpg-game/assets/models/enemies/.optimized/sickly-capfolk/sickly-capfolk-named-nodes.gltf +1708 -0
  169. package/frontiers-rpg-game/assets/models/enemies/.optimized/sickly-capfolk/sickly-capfolk.bin +0 -0
  170. package/frontiers-rpg-game/assets/models/enemies/.optimized/sickly-capfolk/sickly-capfolk.gltf +1667 -0
  171. package/frontiers-rpg-game/assets/models/enemies/.optimized/sickly-capfolk/sickly-capfolk.gltf.md5 +1 -0
  172. package/frontiers-rpg-game/assets/models/enemies/.optimized/snapjaw/baseColor.png +0 -0
  173. package/frontiers-rpg-game/assets/models/enemies/.optimized/snapjaw/snapjaw-named-nodes.bin +0 -0
  174. package/frontiers-rpg-game/assets/models/enemies/.optimized/snapjaw/snapjaw-named-nodes.gltf +12107 -0
  175. package/frontiers-rpg-game/assets/models/enemies/.optimized/snapjaw/snapjaw.bin +0 -0
  176. package/frontiers-rpg-game/assets/models/enemies/.optimized/snapjaw/snapjaw.gltf +9663 -0
  177. package/frontiers-rpg-game/assets/models/enemies/.optimized/snapjaw/snapjaw.gltf.md5 +1 -0
  178. package/frontiers-rpg-game/assets/models/enemies/.optimized/toxic-frog/baseColor.png +0 -0
  179. package/frontiers-rpg-game/assets/models/enemies/.optimized/toxic-frog/toxic-frog-named-nodes.bin +0 -0
  180. package/frontiers-rpg-game/assets/models/enemies/.optimized/toxic-frog/toxic-frog-named-nodes.gltf +5550 -0
  181. package/frontiers-rpg-game/assets/models/enemies/.optimized/toxic-frog/toxic-frog.bin +0 -0
  182. package/frontiers-rpg-game/assets/models/enemies/.optimized/toxic-frog/toxic-frog.gltf +5550 -0
  183. package/frontiers-rpg-game/assets/models/enemies/.optimized/toxic-frog/toxic-frog.gltf.md5 +1 -0
  184. package/frontiers-rpg-game/assets/models/enemies/angler.gltf +1 -0
  185. package/frontiers-rpg-game/assets/models/enemies/blight-knight-ceres.gltf +1 -0
  186. package/frontiers-rpg-game/assets/models/enemies/blighted-capfolk.gltf +1 -0
  187. package/frontiers-rpg-game/assets/models/enemies/capfolk-guardian.gltf +1 -0
  188. package/frontiers-rpg-game/assets/models/enemies/gorkin-chieftan.gltf +1 -0
  189. package/frontiers-rpg-game/assets/models/enemies/gorkin-enforcer.gltf +1 -0
  190. package/frontiers-rpg-game/assets/models/enemies/gorkin-grunt.gltf +1 -0
  191. package/frontiers-rpg-game/assets/models/enemies/gorkin-hunter.gltf +1 -0
  192. package/frontiers-rpg-game/assets/models/enemies/gorkin-shaman.gltf +1 -0
  193. package/frontiers-rpg-game/assets/models/enemies/gorkin-swordsman.gltf +1 -0
  194. package/frontiers-rpg-game/assets/models/enemies/reclusive-weaver.gltf +1 -0
  195. package/frontiers-rpg-game/assets/models/enemies/sickly-capfolk.gltf +1 -0
  196. package/frontiers-rpg-game/assets/models/enemies/snapjaw.gltf +1 -0
  197. package/frontiers-rpg-game/assets/models/enemies/toxic-frog.gltf +1 -0
  198. package/frontiers-rpg-game/assets/models/environment/.optimized/banner-hytopia-1/banner-hytopia-1-named-nodes.bin +0 -0
  199. package/frontiers-rpg-game/assets/models/environment/.optimized/banner-hytopia-1/banner-hytopia-1-named-nodes.gltf +260 -0
  200. package/frontiers-rpg-game/assets/models/environment/.optimized/banner-hytopia-1/banner-hytopia-1.bin +0 -0
  201. package/frontiers-rpg-game/assets/models/environment/.optimized/banner-hytopia-1/banner-hytopia-1.gltf +136 -0
  202. package/frontiers-rpg-game/assets/models/environment/.optimized/banner-hytopia-1/banner-hytopia-1.gltf.md5 +1 -0
  203. package/frontiers-rpg-game/assets/models/environment/.optimized/banner-hytopia-1/baseColor.png +0 -0
  204. package/frontiers-rpg-game/assets/models/environment/.optimized/bookshelf/baseColor.png +0 -0
  205. package/frontiers-rpg-game/assets/models/environment/.optimized/bookshelf/bookshelf-named-nodes.bin +0 -0
  206. package/frontiers-rpg-game/assets/models/environment/.optimized/bookshelf/bookshelf-named-nodes.gltf +882 -0
  207. package/frontiers-rpg-game/assets/models/environment/.optimized/bookshelf/bookshelf.bin +0 -0
  208. package/frontiers-rpg-game/assets/models/environment/.optimized/bookshelf/bookshelf.gltf +136 -0
  209. package/frontiers-rpg-game/assets/models/environment/.optimized/bookshelf/bookshelf.gltf.md5 +1 -0
  210. package/frontiers-rpg-game/assets/models/environment/.optimized/training-dummy/baseColor.png +0 -0
  211. package/frontiers-rpg-game/assets/models/environment/.optimized/training-dummy/training-dummy-named-nodes.bin +0 -0
  212. package/frontiers-rpg-game/assets/models/environment/.optimized/training-dummy/training-dummy-named-nodes.gltf +1312 -0
  213. package/frontiers-rpg-game/assets/models/environment/.optimized/training-dummy/training-dummy.bin +0 -0
  214. package/frontiers-rpg-game/assets/models/environment/.optimized/training-dummy/training-dummy.gltf +1006 -0
  215. package/frontiers-rpg-game/assets/models/environment/.optimized/training-dummy/training-dummy.gltf.md5 +1 -0
  216. package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/baseColor_1.png +0 -0
  217. package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/baseColor_2.png +0 -0
  218. package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/baseColor_3.png +0 -0
  219. package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/baseColor_4.png +0 -0
  220. package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/weapon-rack-named-nodes.bin +0 -0
  221. package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/weapon-rack-named-nodes.gltf +909 -0
  222. package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/weapon-rack.bin +0 -0
  223. package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/weapon-rack.gltf +418 -0
  224. package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/weapon-rack.gltf.md5 +1 -0
  225. package/frontiers-rpg-game/assets/models/environment/banner-hytopia-1.gltf +1 -0
  226. package/frontiers-rpg-game/assets/models/environment/bookshelf.gltf +1 -0
  227. package/frontiers-rpg-game/assets/models/environment/training-dummy.gltf +1 -0
  228. package/frontiers-rpg-game/assets/models/environment/weapon-rack.gltf +1 -0
  229. package/frontiers-rpg-game/assets/models/forageables/.optimized/abandoned-crate/abandoned-crate-named-nodes.bin +0 -0
  230. package/frontiers-rpg-game/assets/models/forageables/.optimized/abandoned-crate/abandoned-crate-named-nodes.gltf +724 -0
  231. package/frontiers-rpg-game/assets/models/forageables/.optimized/abandoned-crate/abandoned-crate.bin +0 -0
  232. package/frontiers-rpg-game/assets/models/forageables/.optimized/abandoned-crate/abandoned-crate.gltf +131 -0
  233. package/frontiers-rpg-game/assets/models/forageables/.optimized/abandoned-crate/abandoned-crate.gltf.md5 +1 -0
  234. package/frontiers-rpg-game/assets/models/forageables/.optimized/abandoned-crate/baseColor.png +0 -0
  235. package/frontiers-rpg-game/assets/models/forageables/.optimized/weathered-stump/baseColor.png +0 -0
  236. package/frontiers-rpg-game/assets/models/forageables/.optimized/weathered-stump/weathered-stump-named-nodes.bin +0 -0
  237. package/frontiers-rpg-game/assets/models/forageables/.optimized/weathered-stump/weathered-stump-named-nodes.gltf +521 -0
  238. package/frontiers-rpg-game/assets/models/forageables/.optimized/weathered-stump/weathered-stump.bin +0 -0
  239. package/frontiers-rpg-game/assets/models/forageables/.optimized/weathered-stump/weathered-stump.gltf +136 -0
  240. package/frontiers-rpg-game/assets/models/forageables/.optimized/weathered-stump/weathered-stump.gltf.md5 +1 -0
  241. package/frontiers-rpg-game/assets/models/forageables/abandoned-crate.gltf +1 -0
  242. package/frontiers-rpg-game/assets/models/forageables/weathered-stump.gltf +1 -0
  243. package/frontiers-rpg-game/assets/models/mounts/.optimized/woolran/baseColor.png +0 -0
  244. package/frontiers-rpg-game/assets/models/mounts/.optimized/woolran/woolran-named-nodes.bin +0 -0
  245. package/frontiers-rpg-game/assets/models/mounts/.optimized/woolran/woolran-named-nodes.gltf +6889 -0
  246. package/frontiers-rpg-game/assets/models/mounts/.optimized/woolran/woolran.bin +0 -0
  247. package/frontiers-rpg-game/assets/models/mounts/.optimized/woolran/woolran.gltf +4486 -0
  248. package/frontiers-rpg-game/assets/models/mounts/.optimized/woolran/woolran.gltf.md5 +1 -0
  249. package/frontiers-rpg-game/assets/models/mounts/woolran.gltf +1 -0
  250. package/frontiers-rpg-game/assets/models/npcs/.optimized/gravekeeper/baseColor.png +0 -0
  251. package/frontiers-rpg-game/assets/models/npcs/.optimized/gravekeeper/gravekeeper-named-nodes.bin +0 -0
  252. package/frontiers-rpg-game/assets/models/npcs/.optimized/gravekeeper/gravekeeper-named-nodes.gltf +3049 -0
  253. package/frontiers-rpg-game/assets/models/npcs/.optimized/gravekeeper/gravekeeper.bin +0 -0
  254. package/frontiers-rpg-game/assets/models/npcs/.optimized/gravekeeper/gravekeeper.gltf +1647 -0
  255. package/frontiers-rpg-game/assets/models/npcs/.optimized/gravekeeper/gravekeeper.gltf.md5 +1 -0
  256. package/frontiers-rpg-game/assets/models/npcs/.optimized/herder/baseColor.png +0 -0
  257. package/frontiers-rpg-game/assets/models/npcs/.optimized/herder/herder-named-nodes.bin +0 -0
  258. package/frontiers-rpg-game/assets/models/npcs/.optimized/herder/herder-named-nodes.gltf +3259 -0
  259. package/frontiers-rpg-game/assets/models/npcs/.optimized/herder/herder.bin +0 -0
  260. package/frontiers-rpg-game/assets/models/npcs/.optimized/herder/herder.gltf +1615 -0
  261. package/frontiers-rpg-game/assets/models/npcs/.optimized/herder/herder.gltf.md5 +1 -0
  262. package/frontiers-rpg-game/assets/models/players/.optimized/player/player-named-nodes.bin +0 -0
  263. package/frontiers-rpg-game/assets/models/players/.optimized/player/player-named-nodes.gltf +7802 -6249
  264. package/frontiers-rpg-game/assets/models/players/.optimized/player/player.bin +0 -0
  265. package/frontiers-rpg-game/assets/models/players/.optimized/player/player.gltf +7046 -5480
  266. package/frontiers-rpg-game/assets/models/players/.optimized/player/player.gltf.md5 +1 -1
  267. package/frontiers-rpg-game/assets/models/players/player.gltf +1 -1
  268. package/frontiers-rpg-game/assets/models/weapons/.optimized/chieftan-blade/baseColor.png +0 -0
  269. package/frontiers-rpg-game/assets/models/weapons/.optimized/chieftan-blade/chieftan-blade-named-nodes.bin +0 -0
  270. package/frontiers-rpg-game/assets/models/weapons/.optimized/chieftan-blade/chieftan-blade-named-nodes.gltf +726 -0
  271. package/frontiers-rpg-game/assets/models/weapons/.optimized/chieftan-blade/chieftan-blade.bin +0 -0
  272. package/frontiers-rpg-game/assets/models/weapons/.optimized/chieftan-blade/chieftan-blade.gltf +335 -0
  273. package/frontiers-rpg-game/assets/models/weapons/.optimized/chieftan-blade/chieftan-blade.gltf.md5 +1 -0
  274. package/frontiers-rpg-game/assets/models/weapons/chieftan-blade.gltf +1 -0
  275. package/frontiers-rpg-game/assets/particles/dirt.png +0 -0
  276. package/frontiers-rpg-game/assets/ui/index.html +50 -7
  277. package/frontiers-rpg-game/assets/ui/menus/dialogue.html +30 -4
  278. package/frontiers-rpg-game/assets/ui/shared/item-stats.html +1 -1
  279. package/frontiers-rpg-game/assets/ui/shared/item-tooltips.html +19 -2
  280. package/frontiers-rpg-game/src/GameClock.ts +14 -0
  281. package/frontiers-rpg-game/src/GameManager.ts +1 -4
  282. package/frontiers-rpg-game/src/GameRegion.ts +6 -2
  283. package/frontiers-rpg-game/src/entities/BaseCombatEntity.ts +58 -26
  284. package/frontiers-rpg-game/src/entities/BaseEntity.ts +10 -3
  285. package/frontiers-rpg-game/src/entities/enemies/GorkinChieftanEntity.ts +183 -0
  286. package/frontiers-rpg-game/src/entities/enemies/GorkinEnforcerEntity.ts +79 -0
  287. package/frontiers-rpg-game/src/entities/enemies/GorkinGruntEntity.ts +98 -0
  288. package/frontiers-rpg-game/src/entities/enemies/GorkinHunterEntity.ts +82 -0
  289. package/frontiers-rpg-game/src/entities/enemies/GorkinShamanEntity.ts +146 -0
  290. package/frontiers-rpg-game/src/entities/enemies/GorkinSwordsmanEntity.ts +114 -0
  291. package/frontiers-rpg-game/src/entities/enemies/QueenWeaverEntity.ts +8 -0
  292. package/frontiers-rpg-game/src/entities/enemies/RatkinBruteEntity.ts +6 -0
  293. package/frontiers-rpg-game/src/entities/enemies/RatkinWarriorEntity.ts +4 -0
  294. package/frontiers-rpg-game/src/entities/enemies/ReclusiveWeaverEntity.ts +102 -0
  295. package/frontiers-rpg-game/src/entities/{environmental → enemies}/SpiderWebEntity.ts +14 -8
  296. package/frontiers-rpg-game/src/entities/enemies/TaintedRatkinBruteEntity.ts +6 -0
  297. package/frontiers-rpg-game/src/entities/enemies/TaintedRatkinWarriorEntity.ts +4 -0
  298. package/frontiers-rpg-game/src/entities/enemies/WeaverBroodlingEntity.ts +5 -1
  299. package/frontiers-rpg-game/src/entities/forageables/AbandonedCrateEntity.ts +57 -0
  300. package/frontiers-rpg-game/src/entities/forageables/WeatheredStumpEntity.ts +37 -0
  301. package/frontiers-rpg-game/src/entities/npcs/WoolranEntity.ts +26 -0
  302. package/frontiers-rpg-game/src/items/ItemClasses.ts +45 -1
  303. package/frontiers-rpg-game/src/items/ItemUIDataHelper.ts +3 -1
  304. package/frontiers-rpg-game/src/items/consumables/HealingPotionItem.ts +20 -0
  305. package/frontiers-rpg-game/src/items/materials/GoldIngotItem.ts +11 -0
  306. package/frontiers-rpg-game/src/items/materials/GorkinEarItem.ts +10 -0
  307. package/frontiers-rpg-game/src/items/materials/GorkinEyeItem.ts +10 -0
  308. package/frontiers-rpg-game/src/items/materials/GorkinFootItem.ts +10 -0
  309. package/frontiers-rpg-game/src/items/materials/GorkinHandItem.ts +10 -0
  310. package/frontiers-rpg-game/src/items/materials/GorkinSkullItem.ts +10 -0
  311. package/frontiers-rpg-game/src/items/materials/IronIngotItem.ts +11 -0
  312. package/frontiers-rpg-game/src/items/materials/ShackleItem.ts +10 -0
  313. package/frontiers-rpg-game/src/items/materials/ShatteredSwordItem.ts +10 -0
  314. package/frontiers-rpg-game/src/items/materials/SilverSlabItem.ts +11 -0
  315. package/frontiers-rpg-game/src/items/materials/ToughMonsterHide.ts +10 -0
  316. package/frontiers-rpg-game/src/items/materials/WeaverCarapaceItem.ts +11 -0
  317. package/frontiers-rpg-game/src/items/materials/WeaverEggItem.ts +11 -0
  318. package/frontiers-rpg-game/src/items/materials/WeaverHeartItem.ts +10 -0
  319. package/frontiers-rpg-game/src/items/materials/WeaverSilkItem.ts +10 -0
  320. package/frontiers-rpg-game/src/items/weapons/ChieftanBladeItem.ts +70 -0
  321. package/frontiers-rpg-game/src/items/wearables/IronChestplateItem.ts +15 -0
  322. package/frontiers-rpg-game/src/items/wearables/IronGauntletsItem.ts +14 -0
  323. package/frontiers-rpg-game/src/items/wearables/IronGrievesItem.ts +14 -0
  324. package/frontiers-rpg-game/src/items/wearables/IronHelmetItem.ts +15 -0
  325. package/frontiers-rpg-game/src/items/wearables/IronLeggingsItem.ts +15 -0
  326. package/frontiers-rpg-game/src/quests/QuestClasses.ts +6 -0
  327. package/frontiers-rpg-game/src/quests/main/AncientWisdomQuest.ts +125 -0
  328. package/frontiers-rpg-game/src/quests/main/BlightedHarvestQuest.ts +27 -5
  329. package/frontiers-rpg-game/src/quests/side/SkullTrinketsQuest.ts +202 -0
  330. package/frontiers-rpg-game/src/quests/side/WeaverSquashingQuest.ts +128 -0
  331. package/frontiers-rpg-game/src/regions/chitter-forest/ChitterForestRegion.ts +25 -0
  332. package/frontiers-rpg-game/src/regions/hearthwilds/HearthwildsRegion.ts +175 -4
  333. package/frontiers-rpg-game/src/regions/hearthwilds/npcs/ArchivesBookshelf1Entity.ts +136 -0
  334. package/frontiers-rpg-game/src/regions/hearthwilds/npcs/ArchivesBookshelf2Entity.ts +136 -0
  335. package/frontiers-rpg-game/src/regions/hearthwilds/npcs/GravekeeperArdenEntity.ts +48 -0
  336. package/frontiers-rpg-game/src/regions/hearthwilds/npcs/HerderBorisEntity.ts +61 -0
  337. package/frontiers-rpg-game/src/regions/hearthwilds/npcs/MerchantFonnEntity.ts +62 -0
  338. package/frontiers-rpg-game/src/regions/hearthwilds/npcs/SurvivorMycelEntity.ts +62 -0
  339. package/frontiers-rpg-game/src/regions/ratkin-nest/RatkinNestRegion.ts +3 -0
  340. package/frontiers-rpg-game/src/regions/stalkhaven/npcs/BlacksmithArdenEntity.ts +116 -5
  341. package/frontiers-rpg-game/src/regions/weavers-hollow/WeaversHollowRegion.ts +1 -1
  342. package/frontiers-rpg-game/src/systems/Spawner.ts +9 -1
  343. package/package.json +1 -1
  344. /package/frontiers-rpg-game/assets/models/npcs/{auctioneer.gltf → gravekeeper.gltf} +0 -0
  345. /package/frontiers-rpg-game/assets/models/npcs/{lumberjack.gltf → herder.gltf} +0 -0
@@ -0,0 +1,125 @@
1
+ import BaseQuest, { QuestObjective, QuestNpcDialogueInteraction } from '../BaseQuest';
2
+ import { SkillId } from '../../config';
3
+ import type GamePlayerEntity from '../../GamePlayerEntity';
4
+
5
+ import HealerMycelisEntity from '../../regions/stalkhaven/npcs/HealerMycelisEntity';
6
+ import ArchivesBookshelf2Entity from '../../regions/hearthwilds/npcs/ArchivesBookshelf2Entity';
7
+
8
+ export default class AncientWisdomQuest extends BaseQuest {
9
+ static readonly id = 'ancient-wisdom';
10
+ static readonly name = 'Ancient Wisdom';
11
+ static readonly description = `Healer Mycelis has asked you to find the old Capfolk archives in the Hearthwilds and see what you can learn about the Blighted Roots.`;
12
+
13
+ static readonly reward = {
14
+ skillExperience: [
15
+ { skillId: SkillId.EXPLORATION, amount: 550 },
16
+ ],
17
+ }
18
+
19
+ static readonly objectives: QuestObjective[] = [
20
+ {
21
+ id: 'find-archives',
22
+ name: 'Find the old Capfolk Archives and learn about the Blighted Roots',
23
+ description: 'Find the old Capfolk archives in the Hearthwilds and see what you can learn about the Blighted Roots.',
24
+ target: 1,
25
+ },
26
+ {
27
+ id: 'return-to-healer-mycelis',
28
+ name: 'Return to Healer Mycelis',
29
+ description: 'Return to Healer Mycelis in Stalkhaven and share the what you learned.',
30
+ target: 1,
31
+ }
32
+ ];
33
+
34
+ static readonly dialogueInteractions: QuestNpcDialogueInteraction[] = [
35
+ {
36
+ npcClass: ArchivesBookshelf2Entity,
37
+ dialogueOption: {
38
+ text: 'Read the book peaking out from under dust and rot...',
39
+ nextDialogue: {
40
+ text: `*You carefully pull out a thick tome titled "The Great Shadow & The Withering Age". Opening to a marked page, you read:*
41
+
42
+ "The great shadow that fell upon our land was not merely darkness, but a living hunger that spread through twisted roots beneath the earth. This ancient evil spawned grotesque growths across the countryside - writhing vines and corrupted plants that bore roots of a sickly, unnatural hue."`,
43
+ options: [
44
+ {
45
+ text: `Continue reading...`,
46
+ nextDialogue: {
47
+ text: `"All these twisted growths were interconnected through a vast underground network of tainted roots, sharing the stolen life force of everything they consumed. The very air grew thick and poisonous where these abominations took hold, choking the land with their malevolent presence."`,
48
+ options: [
49
+ {
50
+ text: `Turn to the next page...`,
51
+ nextDialogue: {
52
+ text: `*You turn the page and gasp - there's a detailed illustration of gnarled, twisted roots. The drawing looks exactly like the blighted roots you collected from the Blight Blooms in the Ratkin nest. Below the image, ancient text reads:*
53
+
54
+ "When our people marched to the mountain's heart, we found not death but slumber. The great hunger was driven deep, beyond the peaks where shadow dwells eternal. Yet the wise among us whispered warnings - that which feeds on life's essence cannot be truly slain, only... displaced. Should the tainted roots emerge anew in distant lands, know that the mountain's vigil may be weakening."`,
55
+ options: [
56
+ {
57
+ text: `Close the book and remember to return to Healer Mycelis`,
58
+ dismiss: true,
59
+ pureExit: true,
60
+ }
61
+ ]
62
+ },
63
+ onSelect: (interactor: GamePlayerEntity) => {
64
+ interactor.gamePlayer.questLog.adjustObjectiveProgress(this.id, 'find-archives', 1);
65
+ }
66
+ }
67
+ ]
68
+ }
69
+ },
70
+ {
71
+ text: `Close the book`,
72
+ dismiss: true,
73
+ pureExit: true,
74
+ }
75
+ ]
76
+ },
77
+ },
78
+ enabledForInteractor: (interactor: GamePlayerEntity) => {
79
+ return interactor.gamePlayer.questLog.isQuestActive(this.id) &&
80
+ !interactor.gamePlayer.questLog.isQuestObjectiveCompleted(this.id, 'find-archives');
81
+ }
82
+ },
83
+ {
84
+ npcClass: HealerMycelisEntity,
85
+ dialogueOption: {
86
+ text: 'I found the archives and learned about the Blighted Roots.',
87
+ nextDialogue: {
88
+ text: `Devs: Well, you've reached the end of the main questline content! We'll have another update next week! In the meantime, there's lot of new sidequests in the Hearthwilds, go explore!`,
89
+ options: [
90
+ {
91
+ text: `Ok, I'll come back next week.`,
92
+ dismiss: true,
93
+ pureExit: true,
94
+ }
95
+ ]
96
+ // text: `By the ancient spores! What did you discover? Tell me everything you learned from those old texts.`,
97
+ // options: [
98
+ // {
99
+ // text: 'The roots match ancient drawings, but the text speaks in riddles about mountains and a slumbering hunger .',
100
+ // nextDialogue: {
101
+ // text: `Mountains... slumber... By the sacred groves, this sounds like the old tales of the Withering Age. If these roots are connected to that ancient threat, and if it was merely driven away rather than destroyed... This knowledge is both invaluable and deeply troubling.`,
102
+ // options: [
103
+ // {
104
+ // text: `What should we do with this information?`,
105
+ // dismiss: true,
106
+ // pureExit: true,
107
+ // }
108
+ // ]
109
+ // },
110
+ // onSelect: (interactor: GamePlayerEntity) => {
111
+ // interactor.gamePlayer.questLog.adjustObjectiveProgress(this.id, 'return-to-healer-mycelis', 1);
112
+ // interactor.gamePlayer.questLog.completeQuest(this.id);
113
+ // // next quest
114
+ // }
115
+ // }
116
+ // ]
117
+ },
118
+ },
119
+ enabledForInteractor: (interactor: GamePlayerEntity) => {
120
+ return interactor.gamePlayer.questLog.isQuestActive(this.id) &&
121
+ interactor.gamePlayer.questLog.isQuestObjectiveCompleted(this.id, 'find-archives')
122
+ }
123
+ },
124
+ ];
125
+ }
@@ -8,6 +8,7 @@ import type { BaseItemPlayerEventPayloads } from '../../items/BaseItem';
8
8
 
9
9
  import BlightedRootItem from '../../items/materials/BlightedRootItem';
10
10
  import HealerMycelisEntity from '../../regions/stalkhaven/npcs/HealerMycelisEntity';
11
+ import AncientWisdomQuest from './AncientWisdomQuest';
11
12
 
12
13
  export default class BlightedHarvestQuest extends BaseQuest {
13
14
  static readonly id = 'blighted-harvest';
@@ -42,13 +43,34 @@ export default class BlightedHarvestQuest extends BaseQuest {
42
43
  dialogueOption: {
43
44
  text: 'Scout Morel asked me to bring you these... things. What are they?',
44
45
  nextDialogue: {
45
- text: '[Frontiers Developers]: Well, this is embarrassing.. You reached the end of the v0.1.0 early alpha content! But have no fear, we will release a another big content update next week, with weekly content updates to follow. With the next update, you can come back and talk to Healer Mycelis and progress!',
46
+ text: `What?... Where did you find these? These are ancient roots - I remember studying them as a boy in the old Capfolk archives. There was an entire section about these in the ancient texts.`,
46
47
  options: [
47
48
  {
48
- text: `I see, I'll be back next week for the update!`,
49
- dismiss: true,
50
- pureExit: true,
51
- }
49
+ text: 'Where are these archives?',
50
+ nextDialogue: {
51
+ text: `The old archives building is in the Hearthwilds, along the path to Sporewick. It's been abandoned for decades and is just ruins now. But if any books survived, they might still hold knowledge about these roots.`,
52
+ options: [
53
+ {
54
+ text: 'I could search the ruins for the books.',
55
+ nextDialogue: {
56
+ text: `You would? By the ancient spores, that's brave! But please be extremely careful - the fog is much denser in the Hearthwilds, and the creatures far more dangerous. You'll need to go through Chitter Forest to get to the Hearthwilds. Return to me with what you learn.`,
57
+ options: [
58
+ {
59
+ text: `I'll find those archives.`,
60
+ dismiss: true,
61
+ pureExit: true,
62
+ }
63
+ ]
64
+ },
65
+ onSelect: (interactor: GamePlayerEntity) => {
66
+ interactor.gamePlayer.questLog.adjustObjectiveProgress(this.id, 'give-blighted-roots', 1);
67
+ interactor.gamePlayer.questLog.completeQuest(this.id);
68
+ interactor.gamePlayer.questLog.startQuest(AncientWisdomQuest);
69
+ }
70
+ },
71
+ ]
72
+ }
73
+ },
52
74
  ]
53
75
  },
54
76
  },
@@ -0,0 +1,202 @@
1
+ import BaseQuest, { QuestObjective, QuestNpcDialogueInteraction } from '../BaseQuest';
2
+ import { SkillId } from '../../config';
3
+ import type GamePlayer from '../../GamePlayer';
4
+ import type GamePlayerEntity from '../../GamePlayerEntity';
5
+
6
+ import { BaseEntityPlayerEvent } from '../../entities/BaseEntity';
7
+ import { BaseItemPlayerEvent } from '../../items/BaseItem';
8
+ import type { BaseEntityPlayerEventPayloads } from '../../entities/BaseEntity';
9
+ import type { BaseItemPlayerEventPayloads } from '../../items/BaseItem';
10
+
11
+ import GravekeeperArdenEntity from '../../regions/hearthwilds/npcs/GravekeeperArdenEntity';
12
+ import GorkinChieftanEntity from '../../entities/enemies/GorkinChieftanEntity';
13
+ import GorkinEnforcerEntity from '../../entities/enemies/GorkinEnforcerEntity';
14
+ import GorkinGruntEntity from '../../entities/enemies/GorkinGruntEntity';
15
+ import GorkinHunterEntity from '../../entities/enemies/GorkinHunterEntity';
16
+ import GorkinShamanEntity from '../../entities/enemies/GorkinShamanEntity';
17
+ import GorkinSwordsmanEntity from '../../entities/enemies/GorkinSwordsmanEntity';
18
+
19
+ import GoldItem from '../../items/general/GoldItem';
20
+ import IronIngotItem from '../../items/materials/IronIngotItem';
21
+ import GorkinSkullItem from '../../items/materials/GorkinSkullItem';
22
+
23
+ export default class SkullTrinketsQuest extends BaseQuest {
24
+ static readonly id = 'skull-trinkets';
25
+ static readonly name = 'Skull Trinkets';
26
+ static readonly description = `Gravekeeper Arden is tired of dealing with the Gorkin, he wants you to thin them out and collect their skulls as trinkets.`;
27
+
28
+ static readonly reward = {
29
+ items: [
30
+ { itemClass: GoldItem, quantity: 500 },
31
+ { itemClass: IronIngotItem, quantity: 10 },
32
+ ],
33
+ skillExperience: [
34
+ { skillId: SkillId.COMBAT, amount: 1000 },
35
+ { skillId: SkillId.AGILITY, amount: 500 },
36
+ { skillId: SkillId.EXPLORATION, amount: 750 },
37
+ ],
38
+ }
39
+
40
+ static readonly objectives: QuestObjective[] = [
41
+ {
42
+ id: 'kill-chieftan',
43
+ name: 'Kill 1 Gorkin Chieftan',
44
+ description: `Kill 1 Gorkin Chieftan, they're rare but sometimes spotted in Gorkin groups.`,
45
+ target: 1,
46
+ },
47
+ {
48
+ id: 'kill-enforcers',
49
+ name: 'Kill 10 Gorkin Enforcers',
50
+ description: `Kill 10 Gorkin Enforcers.`,
51
+ target: 10,
52
+ },
53
+ {
54
+ id: 'kill-grunts',
55
+ name: 'Kill 25 Gorkin Grunts',
56
+ description: `Kill 25 Gorkin Grunts.`,
57
+ target: 25,
58
+ },
59
+ {
60
+ id: 'kill-hunters',
61
+ name: 'Kill 10 Gorkin Hunters',
62
+ description: `Kill 10 Gorkin Hunters.`,
63
+ target: 10,
64
+ },
65
+ {
66
+ id: 'kill-shamans',
67
+ name: 'Kill 10 Gorkin Shamans',
68
+ description: `Kill 10 Gorkin Shamans.`,
69
+ target: 10,
70
+ },
71
+ {
72
+ id: 'kill-swordsmen',
73
+ name: 'Kill 10 Gorkin Swordsmen',
74
+ description: `Kill 10 Gorkin Swordsmen.`,
75
+ target: 10,
76
+ },
77
+ {
78
+ id: 'collect-skulls',
79
+ name: 'Collect 25 Gorkin Skulls',
80
+ description: `Collect 25 Gorkin Skulls.`,
81
+ target: 25,
82
+ },
83
+ {
84
+ id: 'talk-to-arden',
85
+ name: 'Speak with Gravekeeper Arden',
86
+ description: 'Speak with Gravekeeper Arden after completing all other objectives.',
87
+ target: 1,
88
+ }
89
+ ];
90
+
91
+ static readonly dialogueInteractions: QuestNpcDialogueInteraction[] = [
92
+ // Start Quest
93
+ {
94
+ npcClass: GravekeeperArdenEntity,
95
+ dialogueOption: {
96
+ text: `You seem bothered by something.`,
97
+ nextDialogue: {
98
+ text: `Bothered? Hah... the Gorkin have been getting on my nerves lately. More than usual, I mean. They keep trampling through my graveyard, disturbing the peace of the dead. I use their skulls as decorations around here - gives the place character, don't you think? But I'm running low on fresh specimens. The dead appreciate the company of... well, other dead things. Need those beasts thinned out more, and I wouldn't mind collecting a few more skulls for my collection.`,
99
+ options: [
100
+ {
101
+ text: `I can help you with that Gorkin problem.`,
102
+ nextDialogue: {
103
+ text: `Excellent! Bring me their skulls. The fresher the better, though I suppose they'll all be equally dead in the end. The dead here have been whispering about wanting new neighbors. Some more Gorkin skulls will quiet their restless spirits... or at least give me something interesting to look at during the long, foggy nights.`,
104
+ options: [
105
+ {
106
+ text: `I'll thin the Gorkin out and bring you those skulls.`,
107
+ dismiss: true,
108
+ pureExit: true,
109
+ }
110
+ ],
111
+ },
112
+ onSelect: (interactor: GamePlayerEntity) => {
113
+ interactor.gamePlayer.questLog.startQuest(this);
114
+ }
115
+ },
116
+ {
117
+ text: `That's... quite a hobby you have there.. bye.`,
118
+ dismiss: true,
119
+ pureExit: true,
120
+ }
121
+ ],
122
+ },
123
+ },
124
+ enabledForInteractor: (interactor: GamePlayerEntity) => {
125
+ return !interactor.gamePlayer.questLog.hasQuest(this.id);
126
+ }
127
+ },
128
+
129
+ // Complete Quest
130
+ {
131
+ npcClass: GravekeeperArdenEntity,
132
+ dialogueOption: {
133
+ text: `I've thinned out the Gorkin and brought you the skulls you wanted.`,
134
+ nextDialogue: {
135
+ text: `Perfect... absolutely perfect. Look at these specimens! The dead will be so pleased to have new company. I'll place these around the graveyard - they'll fit right in with the ancient warriors resting here. The Gorkin won't be trampling through my graveyard anymore, and my collection is complete. The whispers from the graves seem... quieter now. Thank you, wanderer. The dead appreciate your service.`,
136
+ options: [
137
+ {
138
+ text: `Glad I could help with your... decorating.`,
139
+ dismiss: true,
140
+ pureExit: true,
141
+ }
142
+ ],
143
+ },
144
+ onSelect: (interactor: GamePlayerEntity) => {
145
+ if (!interactor.gamePlayer.removeHeldItem(GorkinSkullItem, 25)) {
146
+ return interactor.showNotification(`Gravekeeper Arden is looking for 25 Gorkin Skulls - seems you're a bit short!`, 'error');
147
+ }
148
+
149
+ interactor.gamePlayer.questLog.adjustObjectiveProgress(this.id, 'talk-to-arden', 1);
150
+ interactor.gamePlayer.questLog.completeQuest(this.id);
151
+ }
152
+ },
153
+ enabledForInteractor: (interactor: GamePlayerEntity) => {
154
+ return interactor.gamePlayer.questLog.isQuestActive(this.id) &&
155
+ interactor.gamePlayer.questLog.isQuestObjectiveCompleted(this.id, 'kill-chieftan') &&
156
+ interactor.gamePlayer.questLog.isQuestObjectiveCompleted(this.id, 'kill-enforcers') &&
157
+ interactor.gamePlayer.questLog.isQuestObjectiveCompleted(this.id, 'kill-grunts') &&
158
+ interactor.gamePlayer.questLog.isQuestObjectiveCompleted(this.id, 'kill-hunters') &&
159
+ interactor.gamePlayer.questLog.isQuestObjectiveCompleted(this.id, 'kill-shamans') &&
160
+ interactor.gamePlayer.questLog.isQuestObjectiveCompleted(this.id, 'kill-swordsmen') &&
161
+ interactor.gamePlayer.questLog.isQuestObjectiveCompleted(this.id, 'collect-skulls');
162
+ }
163
+ }
164
+ ];
165
+
166
+ public static setupForPlayer(gamePlayer: GamePlayer): () => void {
167
+ // Add event listeners
168
+ const killListener = (payload: BaseEntityPlayerEventPayloads[BaseEntityPlayerEvent.KILLED]) => {
169
+ if (payload.entity.name.includes('Gorkin')) {
170
+ if (payload.entity instanceof GorkinChieftanEntity) {
171
+ gamePlayer.questLog.adjustObjectiveProgress(this.id, 'kill-chieftan', 1);
172
+ } else if (payload.entity instanceof GorkinEnforcerEntity) {
173
+ gamePlayer.questLog.adjustObjectiveProgress(this.id, 'kill-enforcers', 1);
174
+ } else if (payload.entity instanceof GorkinGruntEntity) {
175
+ gamePlayer.questLog.adjustObjectiveProgress(this.id, 'kill-grunts', 1);
176
+ } else if (payload.entity instanceof GorkinHunterEntity) {
177
+ gamePlayer.questLog.adjustObjectiveProgress(this.id, 'kill-hunters', 1);
178
+ } else if (payload.entity instanceof GorkinShamanEntity) {
179
+ gamePlayer.questLog.adjustObjectiveProgress(this.id, 'kill-shamans', 1);
180
+ } else if (payload.entity instanceof GorkinSwordsmanEntity) {
181
+ gamePlayer.questLog.adjustObjectiveProgress(this.id, 'kill-swordsmen', 1);
182
+ }
183
+ }
184
+ }
185
+
186
+ const itemPickupListener = (payload: BaseItemPlayerEventPayloads[BaseItemPlayerEvent.PICKED_UP]) => {
187
+ if (payload.item.id === GorkinSkullItem.id) {
188
+ gamePlayer.questLog.adjustObjectiveProgress(this.id, 'collect-skulls', payload.item.quantity);
189
+ }
190
+ };
191
+
192
+ gamePlayer.eventRouter.on(BaseEntityPlayerEvent.KILLED, killListener);
193
+ gamePlayer.eventRouter.on(BaseItemPlayerEvent.PICKED_UP, itemPickupListener);
194
+
195
+ const cleanup = () => {
196
+ gamePlayer.eventRouter.off(BaseEntityPlayerEvent.KILLED, killListener);
197
+ gamePlayer.eventRouter.off(BaseItemPlayerEvent.PICKED_UP, itemPickupListener);
198
+ }
199
+
200
+ return cleanup
201
+ }
202
+ }
@@ -0,0 +1,128 @@
1
+ import BaseQuest, { QuestObjective, QuestNpcDialogueInteraction } from '../BaseQuest';
2
+ import { SkillId } from '../../config';
3
+ import type GamePlayer from '../../GamePlayer';
4
+ import type GamePlayerEntity from '../../GamePlayerEntity';
5
+
6
+ import { BaseEntityPlayerEvent } from '../../entities/BaseEntity';
7
+ import type { BaseEntityPlayerEventPayloads } from '../../entities/BaseEntity';
8
+
9
+ import HerderBorisEntity from '../../regions/hearthwilds/npcs/HerderBorisEntity';
10
+ import ReclusiveWeaverEntity from '../../entities/enemies/ReclusiveWeaverEntity';
11
+
12
+ import GoldItem from '../../items/general/GoldItem';
13
+ import IronIngotItem from '../../items/materials/IronIngotItem';
14
+
15
+ export default class WeaverSquashingQuest extends BaseQuest {
16
+ static readonly id = 'weaver-squashing';
17
+ static readonly name = 'Weaver Squashing';
18
+ static readonly description = `Reclusive Weavers have been coming out of the Hearthwilds ravines and attacking Herder Boris's Woolran. Can you help him out?`;
19
+
20
+ static readonly reward = {
21
+ items: [
22
+ { itemClass: GoldItem, quantity: 300 },
23
+ { itemClass: IronIngotItem, quantity: 5 },
24
+ ],
25
+ skillExperience: [
26
+ { skillId: SkillId.COMBAT, amount: 500 },
27
+ { skillId: SkillId.AGILITY, amount: 200 },
28
+ { skillId: SkillId.EXPLORATION, amount: 250 },
29
+ ],
30
+ }
31
+
32
+ static readonly objectives: QuestObjective[] = [
33
+ {
34
+ id: 'kill-weavers',
35
+ name: 'Kill 40 Reclusive Weavers',
36
+ description: `Kill 40 Reclusive Weavers.`,
37
+ target: 40,
38
+ },
39
+ {
40
+ id: 'talk-to-boris',
41
+ name: 'Speak with Herder Boris',
42
+ description: 'Speak with Herder Boris after completing all other objectives.',
43
+ target: 1,
44
+ }
45
+ ];
46
+
47
+ static readonly dialogueInteractions: QuestNpcDialogueInteraction[] = [
48
+ // Start Quest
49
+ {
50
+ npcClass: HerderBorisEntity,
51
+ dialogueOption: {
52
+ text: `Is there anything I can do to help you out?`,
53
+ nextDialogue: {
54
+ text: `BAH! You want to help? Well, since you're asking... Those blasted Reclusive Weavers have been crawling out of the Hearthwilds ravines and attacking my Woolran! Can't take my flock out to graze on the good grass without those eight-legged monsters skittering out and terrorizing them.`,
55
+ options: [
56
+ {
57
+ text: `I can deal with those weavers for you.`,
58
+ nextDialogue: {
59
+ text: `Now that's what I like to hear! Clear out those Reclusive Weavers - at least forty of the buggers by my count. They're holed up in the ravines and crevices all around here. My woolran need safe grazing grounds, and I need my livelihood protected! You handle this weaver problem, and I'll make it worth your while.`,
60
+ options: [
61
+ {
62
+ text: `I'll clear out those weavers for you.`,
63
+ dismiss: true,
64
+ pureExit: true,
65
+ }
66
+ ],
67
+ },
68
+ onSelect: (interactor: GamePlayerEntity) => {
69
+ interactor.gamePlayer.questLog.startQuest(this);
70
+ }
71
+ },
72
+ {
73
+ text: `That sounds dangerous. Maybe find someone else.`,
74
+ dismiss: true,
75
+ pureExit: true,
76
+ }
77
+ ],
78
+ },
79
+ },
80
+ enabledForInteractor: (interactor: GamePlayerEntity) => {
81
+ return !interactor.gamePlayer.questLog.hasQuest(this.id);
82
+ }
83
+ },
84
+
85
+ // Complete Quest
86
+ {
87
+ npcClass: HerderBorisEntity,
88
+ dialogueOption: {
89
+ text: `I've cleared out those Reclusive Weavers for you.`,
90
+ nextDialogue: {
91
+ text: `BAH! Finally! About time someone dealt with those eight-legged menaces. My woolran can graze in peace now without worrying about getting poisoned by weaver fangs. You've done me a real service here - my livelihood depends on keeping those animals safe. Here's your payment.`,
92
+ options: [
93
+ {
94
+ text: `Glad I could help protect your woolran.`,
95
+ dismiss: true,
96
+ pureExit: true,
97
+ }
98
+ ],
99
+ },
100
+ onSelect: (interactor: GamePlayerEntity) => {
101
+ interactor.gamePlayer.questLog.adjustObjectiveProgress(this.id, 'talk-to-boris', 1);
102
+ interactor.gamePlayer.questLog.completeQuest(this.id);
103
+ }
104
+ },
105
+ enabledForInteractor: (interactor: GamePlayerEntity) => {
106
+ return interactor.gamePlayer.questLog.isQuestActive(this.id) &&
107
+ interactor.gamePlayer.questLog.isQuestObjectiveCompleted(this.id, 'kill-weavers');
108
+ }
109
+ }
110
+ ];
111
+
112
+ public static setupForPlayer(gamePlayer: GamePlayer): () => void {
113
+ // Add event listeners
114
+ const killListener = (payload: BaseEntityPlayerEventPayloads[BaseEntityPlayerEvent.KILLED]) => {
115
+ if (payload.entity instanceof ReclusiveWeaverEntity) {
116
+ gamePlayer.questLog.adjustObjectiveProgress(this.id, 'kill-weavers', 1);
117
+ }
118
+ }
119
+
120
+ gamePlayer.eventRouter.on(BaseEntityPlayerEvent.KILLED, killListener);
121
+
122
+ const cleanup = () => {
123
+ gamePlayer.eventRouter.off(BaseEntityPlayerEvent.KILLED, killListener);
124
+ }
125
+
126
+ return cleanup
127
+ }
128
+ }
@@ -9,6 +9,7 @@ import CapfolkKnightEntity from '../../entities/npcs/CapfolkKnightEntity';
9
9
  import CaptainChanterelionEntity from './npcs/CaptainChanterelionEntity';
10
10
 
11
11
  // Spawner Enemies
12
+ import GorkinGruntEntity from '../../entities/enemies/GorkinGruntEntity';
12
13
  import RatkinBruteEntity from '../../entities/enemies/RatkinBruteEntity';
13
14
  import RatkinRangerEntity from '../../entities/enemies/RatkinRangerEntity';
14
15
  import RatkinSpellcasterEntity from '../../entities/enemies/RatkinSpellcasterEntity';
@@ -146,11 +147,27 @@ export default class ChitterForestRegion extends GameRegion {
146
147
  world: this.world,
147
148
  });
148
149
 
150
+ const gorkinGruntsSpawner = new Spawner({
151
+ maxSpawns: 5,
152
+ spawnables: [
153
+ { entityConstructor: GorkinGruntEntity, weight: 1, wanders: true, wanderOptions: roamWanderOptions },
154
+ ],
155
+ spawnRegions: [
156
+ {
157
+ min: { x: 125, y: 2, z: -16 },
158
+ max: { x: 134, y: 4, z: 36 },
159
+ }
160
+ ],
161
+ spawnIntervalMs: 60000,
162
+ world: this.world,
163
+ });
164
+
149
165
  forestAreaSpawner.start(true);
150
166
  forestCamp1Spawner.start(true);
151
167
  forestCamp2Spawner.start(true);
152
168
  pathCampSpawner.start(true);
153
169
  lakeCampSpawner.start(true);
170
+ gorkinGruntsSpawner.start(true);
154
171
  }
155
172
 
156
173
  private _setupForageableSpawners(): void {
@@ -196,6 +213,14 @@ export default class ChitterForestRegion extends GameRegion {
196
213
  }
197
214
 
198
215
  private _setupPortals(): void {
216
+ const hearthwildsPortal = new PortalEntity({
217
+ destinationRegionId: 'hearthwilds',
218
+ destinationRegionPosition: { x: 249, y: 22, z: -89 },
219
+ destinationRegionFacingAngle: 90,
220
+ });
221
+
222
+ hearthwildsPortal.spawn(this.world, { x: 149, y: 3.5, z: -15 }, Quaternion.fromEuler(0, -90, 0));
223
+
199
224
  const stalkhavenPortal = new PortalEntity({
200
225
  destinationRegionId: 'stalkhaven',
201
226
  destinationRegionPosition: { x: 1, y: 2, z: 40 },