@hytopia.com/examples 1.0.27 → 1.0.28

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 (347) 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 +5193 -5203
  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 +190 -0
  286. package/frontiers-rpg-game/src/entities/enemies/GorkinEnforcerEntity.ts +87 -0
  287. package/frontiers-rpg-game/src/entities/enemies/GorkinGruntEntity.ts +113 -0
  288. package/frontiers-rpg-game/src/entities/enemies/GorkinHunterEntity.ts +90 -0
  289. package/frontiers-rpg-game/src/entities/enemies/GorkinShamanEntity.ts +154 -0
  290. package/frontiers-rpg-game/src/entities/enemies/GorkinSwordsmanEntity.ts +121 -0
  291. package/frontiers-rpg-game/src/entities/enemies/QueenWeaverEntity.ts +8 -0
  292. package/frontiers-rpg-game/src/entities/enemies/RatkinBruteEntity.ts +14 -0
  293. package/frontiers-rpg-game/src/entities/enemies/RatkinRangerEntity.ts +8 -0
  294. package/frontiers-rpg-game/src/entities/enemies/RatkinSpellcasterEntity.ts +8 -0
  295. package/frontiers-rpg-game/src/entities/enemies/RatkinWarriorEntity.ts +12 -0
  296. package/frontiers-rpg-game/src/entities/enemies/ReclusiveWeaverEntity.ts +119 -0
  297. package/frontiers-rpg-game/src/entities/{environmental → enemies}/SpiderWebEntity.ts +14 -8
  298. package/frontiers-rpg-game/src/entities/enemies/TaintedRatkinBruteEntity.ts +6 -0
  299. package/frontiers-rpg-game/src/entities/enemies/TaintedRatkinWarriorEntity.ts +4 -0
  300. package/frontiers-rpg-game/src/entities/enemies/WeaverBroodlingEntity.ts +5 -1
  301. package/frontiers-rpg-game/src/entities/forageables/AbandonedCrateEntity.ts +57 -0
  302. package/frontiers-rpg-game/src/entities/forageables/WeatheredStumpEntity.ts +37 -0
  303. package/frontiers-rpg-game/src/entities/npcs/WoolranEntity.ts +26 -0
  304. package/frontiers-rpg-game/src/items/ItemClasses.ts +45 -1
  305. package/frontiers-rpg-game/src/items/ItemUIDataHelper.ts +3 -1
  306. package/frontiers-rpg-game/src/items/consumables/HealingPotionItem.ts +20 -0
  307. package/frontiers-rpg-game/src/items/materials/GoldIngotItem.ts +11 -0
  308. package/frontiers-rpg-game/src/items/materials/GorkinEarItem.ts +10 -0
  309. package/frontiers-rpg-game/src/items/materials/GorkinEyeItem.ts +10 -0
  310. package/frontiers-rpg-game/src/items/materials/GorkinFootItem.ts +10 -0
  311. package/frontiers-rpg-game/src/items/materials/GorkinHandItem.ts +10 -0
  312. package/frontiers-rpg-game/src/items/materials/GorkinSkullItem.ts +10 -0
  313. package/frontiers-rpg-game/src/items/materials/IronIngotItem.ts +11 -0
  314. package/frontiers-rpg-game/src/items/materials/ShackleItem.ts +10 -0
  315. package/frontiers-rpg-game/src/items/materials/ShatteredSwordItem.ts +10 -0
  316. package/frontiers-rpg-game/src/items/materials/SilverSlabItem.ts +11 -0
  317. package/frontiers-rpg-game/src/items/materials/ToughMonsterHide.ts +10 -0
  318. package/frontiers-rpg-game/src/items/materials/WeaverCarapaceItem.ts +11 -0
  319. package/frontiers-rpg-game/src/items/materials/WeaverEggItem.ts +11 -0
  320. package/frontiers-rpg-game/src/items/materials/WeaverHeartItem.ts +10 -0
  321. package/frontiers-rpg-game/src/items/materials/WeaverSilkItem.ts +10 -0
  322. package/frontiers-rpg-game/src/items/weapons/ChieftanBladeItem.ts +70 -0
  323. package/frontiers-rpg-game/src/items/wearables/IronChestplateItem.ts +15 -0
  324. package/frontiers-rpg-game/src/items/wearables/IronGauntletsItem.ts +14 -0
  325. package/frontiers-rpg-game/src/items/wearables/IronGrievesItem.ts +14 -0
  326. package/frontiers-rpg-game/src/items/wearables/IronHelmetItem.ts +15 -0
  327. package/frontiers-rpg-game/src/items/wearables/IronLeggingsItem.ts +15 -0
  328. package/frontiers-rpg-game/src/quests/QuestClasses.ts +6 -0
  329. package/frontiers-rpg-game/src/quests/main/AncientWisdomQuest.ts +125 -0
  330. package/frontiers-rpg-game/src/quests/main/BlightedHarvestQuest.ts +27 -5
  331. package/frontiers-rpg-game/src/quests/side/SkullTrinketsQuest.ts +202 -0
  332. package/frontiers-rpg-game/src/quests/side/WeaverSquashingQuest.ts +128 -0
  333. package/frontiers-rpg-game/src/regions/chitter-forest/ChitterForestRegion.ts +25 -0
  334. package/frontiers-rpg-game/src/regions/hearthwilds/HearthwildsRegion.ts +175 -4
  335. package/frontiers-rpg-game/src/regions/hearthwilds/npcs/ArchivesBookshelf1Entity.ts +136 -0
  336. package/frontiers-rpg-game/src/regions/hearthwilds/npcs/ArchivesBookshelf2Entity.ts +136 -0
  337. package/frontiers-rpg-game/src/regions/hearthwilds/npcs/GravekeeperArdenEntity.ts +48 -0
  338. package/frontiers-rpg-game/src/regions/hearthwilds/npcs/HerderBorisEntity.ts +61 -0
  339. package/frontiers-rpg-game/src/regions/hearthwilds/npcs/MerchantFonnEntity.ts +62 -0
  340. package/frontiers-rpg-game/src/regions/hearthwilds/npcs/SurvivorMycelEntity.ts +62 -0
  341. package/frontiers-rpg-game/src/regions/ratkin-nest/RatkinNestRegion.ts +3 -0
  342. package/frontiers-rpg-game/src/regions/stalkhaven/npcs/BlacksmithArdenEntity.ts +116 -5
  343. package/frontiers-rpg-game/src/regions/weavers-hollow/WeaversHollowRegion.ts +1 -1
  344. package/frontiers-rpg-game/src/systems/Spawner.ts +9 -1
  345. package/package.json +1 -1
  346. /package/frontiers-rpg-game/assets/models/npcs/{auctioneer.gltf → gravekeeper.gltf} +0 -0
  347. /package/frontiers-rpg-game/assets/models/npcs/{lumberjack.gltf → herder.gltf} +0 -0
@@ -0,0 +1,90 @@
1
+ import BaseCombatEntity, { BaseCombatEntityOptions } from "../BaseCombatEntity";
2
+ import BaseProjectileEntity from "../BaseProjectileEntity";
3
+ import GamePlayerEntity from "../../GamePlayerEntity";
4
+ import type { Vector3Like } from 'hytopia';
5
+
6
+ // Aggro Target Types
7
+ import ReclusiveWeaverEntity from "./ReclusiveWeaverEntity";
8
+
9
+ // Drops
10
+ import GoldItem from "../../items/general/GoldItem";
11
+ import GorkinEarItem from "../../items/materials/GorkinEarItem";
12
+ import GorkinEyeItem from "../../items/materials/GorkinEyeItem";
13
+ import GorkinFootItem from "../../items/materials/GorkinFootItem";
14
+ import GorkinHandItem from "../../items/materials/GorkinHandItem";
15
+ import GorkinSkullItem from "../../items/materials/GorkinSkullItem";
16
+ import IronIngotItem from "../../items/materials/IronIngotItem";
17
+ import ShackleItem from "../../items/materials/ShackleItem";
18
+ import ToughMonsterHide from "../../items/materials/ToughMonsterHide";
19
+
20
+ export type GorkinHunterEntityOptions = {
21
+
22
+ } & Partial<BaseCombatEntityOptions>;
23
+
24
+ export default class GorkinHunterEntity extends BaseCombatEntity {
25
+ constructor(options?: GorkinHunterEntityOptions) {
26
+ super({
27
+ aggroRadius: 13,
28
+ aggroSensorForwardOffset: 4,
29
+ aggroTargetTypes: [
30
+ GamePlayerEntity,
31
+ ReclusiveWeaverEntity,
32
+ ],
33
+ attacks: [
34
+ { // Slow heavy bow attack
35
+ animations: [ 'atk1' ],
36
+ complexAttack: (params) => {
37
+ this._shootArrow(params.target.position, this.calculateDamageWithVariance(24, 0.3));
38
+ },
39
+ complexAttackDelayMs: 1550,
40
+ cooldownMs: 2500,
41
+ range: 12,
42
+ weight: 1,
43
+ },
44
+ ],
45
+ combatExperienceReward: 65,
46
+ deathAnimations: [ 'death' ],
47
+ deathDespawnDelayMs: 2400,
48
+ deathItemDrops: [
49
+ { itemClass: GoldItem, minQuantity: 16, maxQuantity: 24, weight: 5 },
50
+ { itemClass: GorkinSkullItem, weight: 4 },
51
+ { itemClass: GorkinEarItem, minQuantity: 1, maxQuantity: 2, weight: 4 },
52
+ { itemClass: GorkinEyeItem, minQuantity: 1, maxQuantity: 2, weight: 3 },
53
+ { itemClass: GorkinFootItem, minQuantity: 1, maxQuantity: 2, weight: 3 },
54
+ { itemClass: GorkinHandItem, minQuantity: 1, maxQuantity: 2, weight: 3 },
55
+ { itemClass: ToughMonsterHide, weight: 3 },
56
+ { itemClass: ShackleItem, weight: 2 },
57
+ { itemClass: IronIngotItem, minQuantity: 1, maxQuantity: 2, weight: 1 },
58
+ ],
59
+ health: 160,
60
+ idleAnimations: [ 'idle' ],
61
+ modelUri: 'models/enemies/gorkin-hunter.gltf',
62
+ modelScale: 0.9,
63
+ moveAnimations: [ 'walk' ],
64
+ moveSpeed: 3,
65
+ name: 'Gorkin Hunter',
66
+ pathfindingOptions: {
67
+ maxJump: 2,
68
+ maxFall: 2,
69
+ },
70
+ ...options,
71
+ });
72
+ }
73
+
74
+ private _shootArrow(targetPosition: Vector3Like, damage: number) {
75
+ if (!this.world) return;
76
+
77
+ const arrow = new BaseProjectileEntity({
78
+ damage,
79
+ despawnAfterMs: 1000,
80
+ direction: this.calculateDirectionToTargetPosition(targetPosition),
81
+ gravityScale: 0.1,
82
+ modelUri: 'models/projectiles/arrow.glb',
83
+ modelScale: 0.75,
84
+ speed: 35,
85
+ source: this,
86
+ });
87
+
88
+ arrow.spawn(this.world, this.position, this.rotation);
89
+ }
90
+ }
@@ -0,0 +1,154 @@
1
+ import { ColliderShape, Entity, RigidBodyType } from "hytopia";
2
+ import { isDamageable } from '../../interfaces/IDamageable';
3
+ import BaseCombatEntity, { BaseCombatEntityOptions } from "../BaseCombatEntity";
4
+ import BaseProjectileEntity from '../BaseProjectileEntity';
5
+ import GamePlayerEntity from "../../GamePlayerEntity";
6
+
7
+ // Aggro Target Types
8
+ import ReclusiveWeaverEntity from "./ReclusiveWeaverEntity";
9
+
10
+ // Drops
11
+ import GoldItem from "../../items/general/GoldItem";
12
+ import GorkinEarItem from "../../items/materials/GorkinEarItem";
13
+ import GorkinEyeItem from "../../items/materials/GorkinEyeItem";
14
+ import GorkinFootItem from "../../items/materials/GorkinFootItem";
15
+ import GorkinHandItem from "../../items/materials/GorkinHandItem";
16
+ import GorkinSkullItem from "../../items/materials/GorkinSkullItem";
17
+ import IronIngotItem from "../../items/materials/IronIngotItem";
18
+ import ShackleItem from "../../items/materials/ShackleItem";
19
+ import ToughMonsterHide from "../../items/materials/ToughMonsterHide";
20
+
21
+ export type GorkinShamanEntityOptions = {
22
+
23
+ } & Partial<BaseCombatEntityOptions>;
24
+
25
+ export default class GorkinShamanEntity extends BaseCombatEntity {
26
+ constructor(options?: GorkinShamanEntityOptions) {
27
+ super({
28
+ aggroRadius: 9,
29
+ aggroSensorForwardOffset: 3,
30
+ aggroTargetTypes: [
31
+ GamePlayerEntity,
32
+ ReclusiveWeaverEntity,
33
+ ],
34
+ attacks: [
35
+ { // Toxic AoE
36
+ animations: [ 'atk1' ],
37
+ complexAttack: () => this._toxicAoE(30, 5),
38
+ complexAttackDelayMs: 2000,
39
+ cooldownMs: 2500,
40
+ range: 6,
41
+ stopAllAnimationForMs: 2200,
42
+ stopMovingForDurationMs: 2200,
43
+ weight: 100,
44
+ },
45
+ { // Toxic spread
46
+ animations: [ 'atk2' ],
47
+ complexAttack: () => this._toxicSpread(37),
48
+ complexAttackDelayMs: 1300,
49
+ cooldownMs: 3250,
50
+ range: 7,
51
+ stopAllAnimationForMs: 2200,
52
+ stopMovingForDurationMs: 2200,
53
+ weight: 2,
54
+ },
55
+ ],
56
+ combatExperienceReward: 60,
57
+ deathAnimations: [ 'death' ],
58
+ deathDespawnDelayMs: 2700,
59
+ deathItemDrops: [
60
+ { itemClass: GoldItem, minQuantity: 20, maxQuantity: 29, weight: 5 },
61
+ { itemClass: GorkinSkullItem, weight: 4 },
62
+ { itemClass: GorkinEarItem, minQuantity: 1, maxQuantity: 2, weight: 4 },
63
+ { itemClass: GorkinEyeItem, minQuantity: 1, maxQuantity: 2, weight: 3 },
64
+ { itemClass: GorkinFootItem, minQuantity: 1, maxQuantity: 2, weight: 3 },
65
+ { itemClass: GorkinHandItem, minQuantity: 1, maxQuantity: 2, weight: 3 },
66
+ { itemClass: ToughMonsterHide, weight: 3 },
67
+ { itemClass: ShackleItem, weight: 2 },
68
+ { itemClass: IronIngotItem, minQuantity: 1, maxQuantity: 2, weight: 1 },
69
+ ],
70
+ diameterOverride: 0.65,
71
+ health: 150,
72
+ idleAnimations: [ 'idle' ],
73
+ modelUri: 'models/enemies/gorkin-shaman.gltf',
74
+ modelPreferredShape: ColliderShape.CAPSULE,
75
+ modelScale: 0.9,
76
+ moveAnimations: [ 'walk' ],
77
+ moveSpeed: 2,
78
+ name: 'Gorkin Shaman',
79
+ rigidBodyOptions: {
80
+ type: RigidBodyType.DYNAMIC,
81
+ colliders: [ // manually sized collider since the chain whip breaks auto calculations
82
+ {
83
+ shape: ColliderShape.CAPSULE,
84
+ halfHeight: 0.175,
85
+ radius: 0.65,
86
+ },
87
+ ],
88
+ },
89
+ pathfindingOptions: {
90
+ maxJump: 2,
91
+ maxFall: 2,
92
+ },
93
+ ...options,
94
+ });
95
+ }
96
+
97
+ private _toxicAoE(baseDamage: number, aoeRadius: number) {
98
+ if (!this.world) return;
99
+
100
+ const gas = new Entity({
101
+ modelUri: 'models/vfx/gas-explode.gltf',
102
+ modelLoopedAnimations: [ 'actived' ],
103
+ rigidBodyOptions: {
104
+ type: RigidBodyType.FIXED,
105
+ colliders: [
106
+ {
107
+ shape: ColliderShape.BALL,
108
+ radius: aoeRadius,
109
+ isSensor: true,
110
+ onCollision: (other, started) => {
111
+ if (started && other !== this && isDamageable(other)) {
112
+ other.takeDamage(this.calculateDamageWithVariance(baseDamage, 0.3));
113
+ }
114
+ }
115
+ }
116
+ ]
117
+ },
118
+ tintColor: { r: 0, g: 255, b: 0 },
119
+ });
120
+
121
+ gas.spawn(this.world, this.position);
122
+
123
+ setTimeout(() => {
124
+ gas.despawn();
125
+ }, 1800);
126
+ }
127
+
128
+ private _toxicSpread(baseDamage: number) {
129
+ if (!this.world) return;
130
+
131
+ const direction = this.directionFromRotation;
132
+ const gasSpray = new BaseProjectileEntity({
133
+ damage: this.calculateDamageWithVariance(baseDamage, 0.3),
134
+ despawnAfterMs: 2000,
135
+ direction,
136
+ gravityScale: 0.05,
137
+ modelUri: 'models/projectiles/wide-spinning-fireball.gltf',
138
+ modelLoopedAnimations: [ 'idle' ],
139
+ modelScale: 0.75,
140
+ speed: 12,
141
+ source: this,
142
+ tintColor: { r: 0, g: 255, b: 128 },
143
+ });
144
+
145
+ const sourcePosition = this.position;
146
+ const offsetSpawnPosition = {
147
+ x: sourcePosition.x + direction.x * 2,
148
+ y: sourcePosition.y + direction.y * 2,
149
+ z: sourcePosition.z + direction.z * 2,
150
+ }
151
+
152
+ gasSpray.spawn(this.world, offsetSpawnPosition, this.rotation);
153
+ }
154
+ }
@@ -0,0 +1,121 @@
1
+ import { ColliderShape, RigidBodyType } from "hytopia";
2
+ import BaseCombatEntity, { BaseCombatEntityOptions } from "../BaseCombatEntity";
3
+ import GamePlayerEntity from "../../GamePlayerEntity";
4
+ import type BaseEntity from "../BaseEntity";
5
+
6
+ // Aggro Target Types
7
+ import ReclusiveWeaverEntity from "./ReclusiveWeaverEntity";
8
+
9
+ // Drops
10
+ import GoldItem from "../../items/general/GoldItem";
11
+ import GorkinEarItem from "../../items/materials/GorkinEarItem";
12
+ import GorkinEyeItem from "../../items/materials/GorkinEyeItem";
13
+ import GorkinFootItem from "../../items/materials/GorkinFootItem";
14
+ import GorkinHandItem from "../../items/materials/GorkinHandItem";
15
+ import GorkinSkullItem from "../../items/materials/GorkinSkullItem";
16
+ import IronIngotItem from "../../items/materials/IronIngotItem";
17
+ import ShatteredSwordItem from "../../items/materials/ShatteredSwordItem";
18
+ import ShackleItem from "../../items/materials/ShackleItem";
19
+ import ToughMonsterHide from "../../items/materials/ToughMonsterHide";
20
+
21
+ export type GorkinSwordsmanEntityOptions = {
22
+
23
+ } & Partial<BaseCombatEntityOptions>;
24
+
25
+ export default class GorkinSwordsmanEntity extends BaseCombatEntity {
26
+ constructor(options?: GorkinSwordsmanEntityOptions) {
27
+ super({
28
+ aggroRadius: 9,
29
+ aggroSensorForwardOffset: 3,
30
+ aggroTargetTypes: [
31
+ GamePlayerEntity,
32
+ ReclusiveWeaverEntity,
33
+ ],
34
+ attacks: [
35
+ { // heavy, slow slam attack
36
+ animations: [ 'atk1' ],
37
+ cooldownMs: 2700,
38
+ range: 2.5, // width/depth calculation is messed up and too large because of the model idle shape, so we use 0
39
+ simpleAttackDamage: 64,
40
+ simpleAttackDamageVariance: 0.3,
41
+ simpleAttackDamageDelayMs: 1400,
42
+ stopAllAnimationForMs: 2200,
43
+ stopMovingForDurationMs: 2200,
44
+ weight: 1,
45
+ },
46
+ { // Double swing attack, standstill
47
+ animations: [ 'atk2' ],
48
+ complexAttack: (params) => this._doubleSwingAttackStill(params.target),
49
+ complexAttackDelayMs: 750,
50
+ cooldownMs: 3500,
51
+ simpleAttackDamage: 41, // complex attack triggers simple attack processing
52
+ simpleAttackDamageVariance: 0.3,
53
+ stopAllAnimationForMs: 2700,
54
+ stopMovingForDurationMs: 2700,
55
+ range: 2.25,
56
+ weight: 1,
57
+ },
58
+ { // Double swing attack, moving
59
+ animations: [ 'atk2_SC' ],
60
+ complexAttack: (params) => this._doubleSwingAttackMoving(params.target),
61
+ complexAttackDelayMs: 750,
62
+ cooldownMs: 3500,
63
+ simpleAttackDamage: 41, // complex attack triggers simple attack processing
64
+ simpleAttackDamageVariance: 0.3,
65
+ stopAllAnimationForMs: 2700,
66
+ range: 2.5,
67
+ weight: 2,
68
+ },
69
+ ],
70
+ combatExperienceReward: 55,
71
+ deathAnimations: [ 'death' ],
72
+ deathDespawnDelayMs: 1000,
73
+ deathItemDrops: [
74
+ { itemClass: GoldItem, minQuantity: 18, maxQuantity: 27, weight: 5 },
75
+ { itemClass: GorkinSkullItem, weight: 4 },
76
+ { itemClass: ShatteredSwordItem, weight: 4 },
77
+ { itemClass: GorkinEarItem, minQuantity: 1, maxQuantity: 2, weight: 4 },
78
+ { itemClass: GorkinEyeItem, minQuantity: 1, maxQuantity: 2, weight: 3 },
79
+ { itemClass: GorkinFootItem, minQuantity: 1, maxQuantity: 2, weight: 3 },
80
+ { itemClass: GorkinHandItem, minQuantity: 1, maxQuantity: 2, weight: 3 },
81
+ { itemClass: ToughMonsterHide, weight: 3 },
82
+ { itemClass: ShackleItem, weight: 2 },
83
+ { itemClass: IronIngotItem, minQuantity: 1, maxQuantity: 2, weight: 1 },
84
+ ],
85
+ diameterOverride: 0.65,
86
+ health: 230,
87
+ idleAnimations: [ 'idle' ],
88
+ modelUri: 'models/enemies/gorkin-swordsman.gltf',
89
+ modelPreferredShape: ColliderShape.CAPSULE,
90
+ modelScale: 0.9,
91
+ moveAnimations: [ 'walk' ],
92
+ moveSpeed: 2.75,
93
+ name: 'Gorkin Swordsman',
94
+ rigidBodyOptions: {
95
+ type: RigidBodyType.DYNAMIC,
96
+ colliders: [ // manually sized collider since the chain whip breaks auto calculations
97
+ {
98
+ shape: ColliderShape.CAPSULE,
99
+ halfHeight: 0.2,
100
+ radius: 0.65,
101
+ },
102
+ ],
103
+ },
104
+ pathfindingOptions: {
105
+ maxJump: 2,
106
+ maxFall: 2,
107
+ },
108
+ ...options,
109
+ });
110
+ }
111
+
112
+ private _doubleSwingAttackStill(target: BaseEntity | GamePlayerEntity) {
113
+ this.processSimpleAttack(target, this.attacks[1]);
114
+ setTimeout(() => this.processSimpleAttack(target, this.attacks[1]), 1100);
115
+ }
116
+
117
+ private _doubleSwingAttackMoving(target: BaseEntity | GamePlayerEntity) {
118
+ this.processSimpleAttack(target, this.attacks[2]);
119
+ setTimeout(() => this.processSimpleAttack(target, this.attacks[2]), 1100);
120
+ }
121
+ }
@@ -9,6 +9,10 @@ import WeaverBroodlingEntity from './WeaverBroodlingEntity';
9
9
  import GoldItem from "../../items/general/GoldItem";
10
10
  import RareSeedsItem from '../../items/seeds/RareSeedsItem';
11
11
  import UnusualSeedsItem from '../../items/seeds/UnusualSeedsItem';
12
+ import WeaverCarapaceItem from '../../items/materials/WeaverCarapaceItem';
13
+ import WeaverEggItem from '../../items/materials/WeaverEggItem';
14
+ import WeaverHeartItem from '../../items/materials/WeaverHeartItem';
15
+ import WeaverSilkItem from '../../items/materials/WeaverSilkItem';
12
16
 
13
17
  export type QueenWeaverEntityOptions = {
14
18
 
@@ -60,7 +64,11 @@ export default class QueenWeaverEntity extends BaseCombatEntity {
60
64
  deathDespawnDelayMs: 1500,
61
65
  deathItemDrops: [
62
66
  { itemClass: GoldItem, minQuantity: 93, maxQuantity: 186, weight: 40 },
67
+ { itemClass: WeaverCarapaceItem, weight: 30 },
68
+ { itemClass: WeaverHeartItem, weight: 20 },
69
+ { itemClass: WeaverEggItem, minQuantity: 3, maxQuantity: 9, weight: 20 },
63
70
  { itemClass: UnusualSeedsItem, minQuantity: 1, maxQuantity: 3, weight: 20 },
71
+ { itemClass: WeaverSilkItem, minQuantity: 4, maxQuantity: 8, weight: 10 },
64
72
  { itemClass: RareSeedsItem, minQuantity: 1, maxQuantity: 3, weight: 1 },
65
73
  ],
66
74
  deathItemMaxDrops: 5,
@@ -1,5 +1,9 @@
1
1
  import BaseCombatEntity, { BaseCombatEntityOptions } from "../BaseCombatEntity";
2
2
 
3
+ // Aggro Target Types
4
+ import GamePlayerEntity from "../../GamePlayerEntity";
5
+ import GorkinGruntEntity from "./GorkinGruntEntity";
6
+
3
7
  // Drops
4
8
  import CommonMushroomItem from "../../items/consumables/CommonMushroomItem";
5
9
  import CommonSeedsItem from "../../items/seeds/CommonSeedsItem";
@@ -19,6 +23,10 @@ export default class RatkinBruteEntity extends BaseCombatEntity {
19
23
  super({
20
24
  aggroRadius: 7.5,
21
25
  aggroSensorForwardOffset: 3,
26
+ aggroTargetTypes: [
27
+ GamePlayerEntity,
28
+ GorkinGruntEntity,
29
+ ],
22
30
  attacks: [
23
31
  { // Heavy body slam attack
24
32
  animations: [ 'atk1' ],
@@ -28,6 +36,8 @@ export default class RatkinBruteEntity extends BaseCombatEntity {
28
36
  simpleAttackDamageVariance: 0.6, // ±60% damage (12-28)
29
37
  simpleAttackDamageDelayMs: 1000, // Deal damage 1000ms into animation
30
38
  simpleAttackReach: 3,
39
+ stopAllAnimationForMs: 2000,
40
+ stopMovingForDurationMs: 2000,
31
41
  weight: 1,
32
42
  },
33
43
  { // Light hammer swing attack
@@ -38,6 +48,8 @@ export default class RatkinBruteEntity extends BaseCombatEntity {
38
48
  simpleAttackDamageVariance: 0.15, // ±15% damage (7-11)
39
49
  simpleAttackDamageDelayMs: 500, // Deal damage 500ms into animation
40
50
  simpleAttackReach: 3,
51
+ stopAllAnimationForMs: 800,
52
+ stopMovingForDurationMs: 800,
41
53
  weight: 2,
42
54
  },
43
55
  { // Light hammer swing 2 attack
@@ -48,6 +60,8 @@ export default class RatkinBruteEntity extends BaseCombatEntity {
48
60
  simpleAttackDamageVariance: 0.15, // ±15% damage (5-9)
49
61
  simpleAttackDamageDelayMs: 350, // Deal damage 350ms into animation
50
62
  simpleAttackReach: 3,
63
+ stopAllAnimationForMs: 1000,
64
+ stopMovingForDurationMs: 1000,
51
65
  weight: 2,
52
66
  },
53
67
  ],
@@ -2,6 +2,10 @@ import BaseCombatEntity, { BaseCombatEntityOptions } from "../BaseCombatEntity";
2
2
  import BaseProjectileEntity from "../BaseProjectileEntity";
3
3
  import type { Vector3Like } from 'hytopia';
4
4
 
5
+ // Aggro Target Types
6
+ import GamePlayerEntity from "../../GamePlayerEntity";
7
+ import GorkinGruntEntity from "./GorkinGruntEntity";
8
+
5
9
  // Drops
6
10
  import CommonMushroomItem from "../../items/consumables/CommonMushroomItem";
7
11
  import CommonSeedsItem from "../../items/seeds/CommonSeedsItem";
@@ -21,6 +25,10 @@ export default class RatkinRangerEntity extends BaseCombatEntity {
21
25
  super({
22
26
  aggroRadius: 11,
23
27
  aggroSensorForwardOffset: 3,
28
+ aggroTargetTypes: [
29
+ GamePlayerEntity,
30
+ GorkinGruntEntity,
31
+ ],
24
32
  attacks: [
25
33
  { // Fast bow attack
26
34
  animations: [ 'atk1' ],
@@ -2,6 +2,10 @@ import BaseCombatEntity, { BaseCombatEntityOptions } from "../BaseCombatEntity";
2
2
  import BaseProjectileEntity from "../BaseProjectileEntity";
3
3
  import type { Vector3Like } from 'hytopia';
4
4
 
5
+ // Aggro Target Types
6
+ import GamePlayerEntity from "../../GamePlayerEntity";
7
+ import GorkinGruntEntity from "./GorkinGruntEntity";
8
+
5
9
  // Drops
6
10
  import CommonMushroomItem from "../../items/consumables/CommonMushroomItem";
7
11
  import CommonSeedsItem from "../../items/seeds/CommonSeedsItem";
@@ -21,6 +25,10 @@ export default class RatkinSpellcasterEntity extends BaseCombatEntity {
21
25
  super({
22
26
  aggroRadius: 12,
23
27
  aggroSensorForwardOffset: 3,
28
+ aggroTargetTypes: [
29
+ GamePlayerEntity,
30
+ GorkinGruntEntity,
31
+ ],
24
32
  attacks: [
25
33
  { // Fireball attack
26
34
  animations: [ 'atk1' ],
@@ -1,5 +1,9 @@
1
1
  import BaseCombatEntity, { BaseCombatEntityOptions } from "../BaseCombatEntity";
2
2
 
3
+ // Aggro Target Types
4
+ import GamePlayerEntity from "../../GamePlayerEntity";
5
+ import GorkinGruntEntity from "./GorkinGruntEntity";
6
+
3
7
  // Drops
4
8
  import CommonMushroomItem from "../../items/consumables/CommonMushroomItem";
5
9
  import CommonSeedsItem from "../../items/seeds/CommonSeedsItem";
@@ -19,6 +23,10 @@ export default class RatkinWarriorEntity extends BaseCombatEntity {
19
23
  super({
20
24
  aggroRadius: 7.5,
21
25
  aggroSensorForwardOffset: 3,
26
+ aggroTargetTypes: [
27
+ GamePlayerEntity,
28
+ GorkinGruntEntity,
29
+ ],
22
30
  attacks: [
23
31
  { // Heavy attack
24
32
  animations: [ 'atk1' ],
@@ -28,6 +36,8 @@ export default class RatkinWarriorEntity extends BaseCombatEntity {
28
36
  simpleAttackDamageVariance: 0.4, // ±40% damage (12-20)
29
37
  simpleAttackDamageDelayMs: 1000, // Deal damage 1000ms into animation
30
38
  simpleAttackReach: 3,
39
+ stopAllAnimationForMs: 2000,
40
+ stopMovingForDurationMs: 2000,
31
41
  weight: 1,
32
42
  },
33
43
  { // Light attack
@@ -38,6 +48,8 @@ export default class RatkinWarriorEntity extends BaseCombatEntity {
38
48
  simpleAttackDamageVariance: 0.1, // ±10% damage (6-8)
39
49
  simpleAttackDamageDelayMs: 400, // Deal damage 400ms into animation
40
50
  simpleAttackReach: 3,
51
+ stopAllAnimationForMs: 1000,
52
+ stopMovingForDurationMs: 1000,
41
53
  weight: 2,
42
54
  },
43
55
  ],
@@ -0,0 +1,119 @@
1
+ import { RigidBodyType } from "hytopia";
2
+ import BaseCombatEntity, { BaseCombatEntityOptions } from "../BaseCombatEntity";
3
+ import SpiderwebEntity from "./SpiderWebEntity";
4
+ import GamePlayerEntity from "../../GamePlayerEntity";
5
+ import type BaseEntity from "../BaseEntity";
6
+
7
+ // Aggro Target Types
8
+ import GorkinChieftanEntity from "./GorkinChieftanEntity";
9
+ import GorkinEnforcerEntity from "./GorkinEnforcerEntity";
10
+ import GorkinGruntEntity from "./GorkinGruntEntity";
11
+ import GorkinHunterEntity from "./GorkinHunterEntity";
12
+ import GorkinShamanEntity from "./GorkinShamanEntity";
13
+ import GorkinSwordsmanEntity from "./GorkinSwordsmanEntity";
14
+
15
+ // Drops
16
+ import GoldItem from "../../items/general/GoldItem";
17
+ import WeaverCarapaceItem from "../../items/materials/WeaverCarapaceItem";
18
+ import WeaverHeartItem from "../../items/materials/WeaverHeartItem";
19
+ import WeaverSilkItem from "../../items/materials/WeaverSilkItem";
20
+ import WeaverEggItem from "../../items/materials/WeaverEggItem";
21
+
22
+ export type ReclusiveWeaverEntityOptions = {
23
+
24
+ } & Partial<BaseCombatEntityOptions>;
25
+
26
+ export default class ReclusiveWeaverEntity extends BaseCombatEntity {
27
+ constructor(options?: ReclusiveWeaverEntityOptions) {
28
+ super({
29
+ aggroRadius: 10,
30
+ aggroSensorForwardOffset: 7,
31
+ aggroTargetTypes: [
32
+ GamePlayerEntity,
33
+ GorkinChieftanEntity,
34
+ GorkinEnforcerEntity,
35
+ GorkinGruntEntity,
36
+ GorkinHunterEntity,
37
+ GorkinShamanEntity,
38
+ GorkinSwordsmanEntity,
39
+ ],
40
+ attacks: [
41
+ { // Bite attack
42
+ animations: [ 'fang_attack' ],
43
+ cooldownMs: 1400,
44
+ range: 2,
45
+ simpleAttackDamage: 24,
46
+ simpleAttackDamageVariance: 0.2,
47
+ simpleAttackDamageDelayMs: 500,
48
+ weight: 15,
49
+ },
50
+ { // Web attack
51
+ animations: [ 'web_attack' ],
52
+ complexAttack: (params) => {
53
+ this._shootWeb(params.target);
54
+ },
55
+ complexAttackDelayMs: 1000,
56
+ cooldownMs: 2000,
57
+ range: 5,
58
+ stopMovingDuringDelay: true,
59
+ weight: 1,
60
+ }
61
+ ],
62
+ combatExperienceReward: 45,
63
+ deathAnimations: [ 'death' ],
64
+ deathDespawnDelayMs: 3000,
65
+ deathItemDrops: [
66
+ { itemClass: GoldItem, minQuantity: 18, maxQuantity: 28, weight: 10 },
67
+ { itemClass: WeaverCarapaceItem, weight: 5 },
68
+ { itemClass: WeaverHeartItem, weight: 4 },
69
+ { itemClass: WeaverEggItem, minQuantity: 1, maxQuantity: 2, weight: 3 },
70
+ { itemClass: WeaverSilkItem, minQuantity: 1, maxQuantity: 3, weight: 2 },
71
+ ],
72
+ deathItemMaxDrops: 2,
73
+ health: 200,
74
+ idleAnimations: [ 'idle' ],
75
+ modelUri: 'models/enemies/reclusive-weaver.gltf',
76
+ modelScale: 0.8,
77
+ moveAnimations: [ 'walk' ],
78
+ moveSpeed: 3,
79
+ name: 'Reclusive Weaver',
80
+ pathfindingOptions: {
81
+ maxJump: 3,
82
+ maxFall: 3,
83
+ },
84
+ ...options,
85
+ });
86
+ }
87
+
88
+ private _shootWeb(target: BaseEntity | GamePlayerEntity) {
89
+ if (!this.world) return;
90
+
91
+ const direction = this.calculateDirectionToTargetPosition(target.position);
92
+ const distance = Math.sqrt(this.calculateDistanceSquaredToTarget(target));
93
+
94
+ const web = new SpiderwebEntity({
95
+ modelScale: 1,
96
+ rigidBodyOptions: {
97
+ type: RigidBodyType.DYNAMIC,
98
+ linearVelocity: {
99
+ x: 1.5 * direction.x * distance,
100
+ y: distance,
101
+ z: 1.5 * direction.z * distance,
102
+ }
103
+ }
104
+ });
105
+
106
+ web.spawn(this.world, {
107
+ x: this.position.x,
108
+ y: this.position.y + 1,
109
+ z: this.position.z,
110
+ }, this.rotation);
111
+
112
+ // Despawn web after 8 seconds
113
+ setTimeout(() => {
114
+ if (web.isSpawned) {
115
+ web.despawn();
116
+ }
117
+ }, 8000);
118
+ }
119
+ }