@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.
- package/frontiers-rpg-game/assets/avatars/bookshelf.png +0 -0
- package/frontiers-rpg-game/assets/avatars/gravekeeper.png +0 -0
- package/frontiers-rpg-game/assets/avatars/herder.png +0 -0
- package/frontiers-rpg-game/assets/blocks/bricks.png +0 -0
- package/frontiers-rpg-game/assets/blocks/clay.png +0 -0
- package/frontiers-rpg-game/assets/blocks/coal-ore.png +0 -0
- package/frontiers-rpg-game/assets/blocks/cobblestone-mossy.png +0 -0
- package/frontiers-rpg-game/assets/blocks/cobblestone.png +0 -0
- package/frontiers-rpg-game/assets/blocks/creep.png +0 -0
- package/frontiers-rpg-game/assets/blocks/diamond-ore.png +0 -0
- package/frontiers-rpg-game/assets/blocks/emerald-block.png +0 -0
- package/frontiers-rpg-game/assets/blocks/emerald-ore.png +0 -0
- package/frontiers-rpg-game/assets/blocks/glass.png +0 -0
- package/frontiers-rpg-game/assets/blocks/gold-ore.png +0 -0
- package/frontiers-rpg-game/assets/blocks/green_fungus/+x.png +0 -0
- package/frontiers-rpg-game/assets/blocks/green_fungus/+y.png +0 -0
- package/frontiers-rpg-game/assets/blocks/green_fungus/+z.png +0 -0
- package/frontiers-rpg-game/assets/blocks/green_fungus/-x.png +0 -0
- package/frontiers-rpg-game/assets/blocks/green_fungus/-y.png +0 -0
- package/frontiers-rpg-game/assets/blocks/green_fungus/-z.png +0 -0
- package/frontiers-rpg-game/assets/blocks/log/+x.png +0 -0
- package/frontiers-rpg-game/assets/blocks/log/+y.png +0 -0
- package/frontiers-rpg-game/assets/blocks/log/+z.png +0 -0
- package/frontiers-rpg-game/assets/blocks/log/-x.png +0 -0
- package/frontiers-rpg-game/assets/blocks/log/-y.png +0 -0
- package/frontiers-rpg-game/assets/blocks/log/-z.png +0 -0
- package/frontiers-rpg-game/assets/blocks/mossy_dirt/+x.png +0 -0
- package/frontiers-rpg-game/assets/blocks/mossy_dirt/+y.png +0 -0
- package/frontiers-rpg-game/assets/blocks/mossy_dirt/+z.png +0 -0
- package/frontiers-rpg-game/assets/blocks/mossy_dirt/-x.png +0 -0
- package/frontiers-rpg-game/assets/blocks/mossy_dirt/-y.png +0 -0
- package/frontiers-rpg-game/assets/blocks/mossy_dirt/-z.png +0 -0
- package/frontiers-rpg-game/assets/blocks/murky-water.png +0 -0
- package/frontiers-rpg-game/assets/blocks/mushroom_top/+x.png +0 -0
- package/frontiers-rpg-game/assets/blocks/mushroom_top/+y.png +0 -0
- package/frontiers-rpg-game/assets/blocks/mushroom_top/+z.png +0 -0
- package/frontiers-rpg-game/assets/blocks/mushroom_top/-x.png +0 -0
- package/frontiers-rpg-game/assets/blocks/mushroom_top/-y.png +0 -0
- package/frontiers-rpg-game/assets/blocks/mushroom_top/-z.png +0 -0
- package/frontiers-rpg-game/assets/blocks/oak-planks-leafy.png +0 -0
- package/frontiers-rpg-game/assets/blocks/oak-planks-leafyer.png +0 -0
- package/frontiers-rpg-game/assets/blocks/oak-planks-leafyerer.png +0 -0
- package/frontiers-rpg-game/assets/blocks/sand.png +0 -0
- package/frontiers-rpg-game/assets/blocks/sandstone.png +0 -0
- package/frontiers-rpg-game/assets/blocks/shadowrock.png +0 -0
- package/frontiers-rpg-game/assets/blocks/snow-rough.png +0 -0
- package/frontiers-rpg-game/assets/blocks/snow.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/brittle-nails.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/chieftan-blade.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/gold-ingot.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/gorkin-ear.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/gorkin-eye.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/gorkin-foot.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/gorkin-hand.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/gorkin-skull.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/healing-potion.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/iron-chestplate.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/iron-gauntlets.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/iron-grieves.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/iron-helmet.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/iron-ingot.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/iron-leggings.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/shackle.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/shattered-sword.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/silver-slab.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/tough-monster-hide.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/weaver-carapace.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/weaver-egg.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/weaver-heart.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/weaver-silk.png +0 -0
- package/frontiers-rpg-game/assets/icons/items/woolran-scroll.png +0 -0
- package/frontiers-rpg-game/assets/maps/chitter-forest.json +5193 -5203
- package/frontiers-rpg-game/assets/maps/hearthwilds.json +21381 -2612
- package/frontiers-rpg-game/assets/models/enemies/.optimized/angler/angler-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/angler/angler-named-nodes.gltf +5472 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/angler/angler.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/angler/angler.gltf +4122 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/angler/angler.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/angler/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/blight-knight-ceres/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/blight-knight-ceres/blight-knight-ceres-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/blight-knight-ceres/blight-knight-ceres-named-nodes.gltf +17967 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/blight-knight-ceres/blight-knight-ceres.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/blight-knight-ceres/blight-knight-ceres.gltf +17403 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/blight-knight-ceres/blight-knight-ceres.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/blighted-capfolk/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/blighted-capfolk/blighted-capfolk-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/blighted-capfolk/blighted-capfolk-named-nodes.gltf +1658 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/blighted-capfolk/blighted-capfolk.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/blighted-capfolk/blighted-capfolk.gltf +1658 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/blighted-capfolk/blighted-capfolk.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/capfolk-guardian/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/capfolk-guardian/capfolk-guardian-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/capfolk-guardian/capfolk-guardian-named-nodes.gltf +9410 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/capfolk-guardian/capfolk-guardian.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/capfolk-guardian/capfolk-guardian.gltf +4261 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/capfolk-guardian/capfolk-guardian.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/baseColor_1.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/baseColor_2.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/gorkin-archer-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/gorkin-archer-named-nodes.gltf +6093 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/gorkin-archer.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/gorkin-archer.gltf +4430 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-archer/gorkin-archer.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/baseColor_1.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/baseColor_2.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/gorkin-assassin-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/gorkin-assassin-named-nodes.gltf +5441 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/gorkin-assassin.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/gorkin-assassin.gltf +4084 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-assassin/gorkin-assassin.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-blademaster/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-blademaster/gorkin-blademaster-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-blademaster/gorkin-blademaster-named-nodes.gltf +5302 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-blademaster/gorkin-blademaster.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-blademaster/gorkin-blademaster.gltf +4134 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-blademaster/gorkin-blademaster.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-chieftan/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-chieftan/gorkin-chieftan-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-chieftan/gorkin-chieftan-named-nodes.gltf +7052 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-chieftan/gorkin-chieftan.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-chieftan/gorkin-chieftan.gltf +5581 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-chieftan/gorkin-chieftan.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-enforcer/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-enforcer/gorkin-enforcer-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-enforcer/gorkin-enforcer-named-nodes.gltf +4086 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-enforcer/gorkin-enforcer.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-enforcer/gorkin-enforcer.gltf +3472 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-enforcer/gorkin-enforcer.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-grunt/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-grunt/gorkin-grunt-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-grunt/gorkin-grunt-named-nodes.gltf +3698 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-grunt/gorkin-grunt.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-grunt/gorkin-grunt.gltf +3193 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-grunt/gorkin-grunt.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-hunter/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-hunter/gorkin-hunter-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-hunter/gorkin-hunter-named-nodes.gltf +3985 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-hunter/gorkin-hunter.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-hunter/gorkin-hunter.gltf +3092 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-hunter/gorkin-hunter.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-shaman/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-shaman/gorkin-shaman-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-shaman/gorkin-shaman-named-nodes.gltf +3850 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-shaman/gorkin-shaman.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-shaman/gorkin-shaman.gltf +3100 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-shaman/gorkin-shaman.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-swordsman/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-swordsman/gorkin-swordsman-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-swordsman/gorkin-swordsman-named-nodes.gltf +4087 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-swordsman/gorkin-swordsman.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-swordsman/gorkin-swordsman.gltf +3582 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/gorkin-swordsman/gorkin-swordsman.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/mother-viper/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/mother-viper/mother-viper-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/mother-viper/mother-viper-named-nodes.gltf +4212 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/mother-viper/mother-viper.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/mother-viper/mother-viper.gltf +3993 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/mother-viper/mother-viper.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/reclusive-weaver/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/reclusive-weaver/reclusive-weaver-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/reclusive-weaver/reclusive-weaver-named-nodes.gltf +7978 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/reclusive-weaver/reclusive-weaver.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/reclusive-weaver/reclusive-weaver.gltf +7978 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/reclusive-weaver/reclusive-weaver.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/sickly-capfolk/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/sickly-capfolk/sickly-capfolk-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/sickly-capfolk/sickly-capfolk-named-nodes.gltf +1708 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/sickly-capfolk/sickly-capfolk.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/sickly-capfolk/sickly-capfolk.gltf +1667 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/sickly-capfolk/sickly-capfolk.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/snapjaw/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/snapjaw/snapjaw-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/snapjaw/snapjaw-named-nodes.gltf +12107 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/snapjaw/snapjaw.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/snapjaw/snapjaw.gltf +9663 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/snapjaw/snapjaw.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/toxic-frog/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/toxic-frog/toxic-frog-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/toxic-frog/toxic-frog-named-nodes.gltf +5550 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/toxic-frog/toxic-frog.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/toxic-frog/toxic-frog.gltf +5550 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/toxic-frog/toxic-frog.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/angler.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/blight-knight-ceres.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/blighted-capfolk.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/capfolk-guardian.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/gorkin-chieftan.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/gorkin-enforcer.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/gorkin-grunt.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/gorkin-hunter.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/gorkin-shaman.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/gorkin-swordsman.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/reclusive-weaver.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/sickly-capfolk.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/snapjaw.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/toxic-frog.gltf +1 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/banner-hytopia-1/banner-hytopia-1-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/banner-hytopia-1/banner-hytopia-1-named-nodes.gltf +260 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/banner-hytopia-1/banner-hytopia-1.bin +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/banner-hytopia-1/banner-hytopia-1.gltf +136 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/banner-hytopia-1/banner-hytopia-1.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/banner-hytopia-1/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/bookshelf/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/bookshelf/bookshelf-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/bookshelf/bookshelf-named-nodes.gltf +882 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/bookshelf/bookshelf.bin +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/bookshelf/bookshelf.gltf +136 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/bookshelf/bookshelf.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/training-dummy/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/training-dummy/training-dummy-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/training-dummy/training-dummy-named-nodes.gltf +1312 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/training-dummy/training-dummy.bin +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/training-dummy/training-dummy.gltf +1006 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/training-dummy/training-dummy.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/baseColor_1.png +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/baseColor_2.png +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/baseColor_3.png +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/baseColor_4.png +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/weapon-rack-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/weapon-rack-named-nodes.gltf +909 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/weapon-rack.bin +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/weapon-rack.gltf +418 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/weapon-rack/weapon-rack.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/environment/banner-hytopia-1.gltf +1 -0
- package/frontiers-rpg-game/assets/models/environment/bookshelf.gltf +1 -0
- package/frontiers-rpg-game/assets/models/environment/training-dummy.gltf +1 -0
- package/frontiers-rpg-game/assets/models/environment/weapon-rack.gltf +1 -0
- package/frontiers-rpg-game/assets/models/forageables/.optimized/abandoned-crate/abandoned-crate-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/forageables/.optimized/abandoned-crate/abandoned-crate-named-nodes.gltf +724 -0
- package/frontiers-rpg-game/assets/models/forageables/.optimized/abandoned-crate/abandoned-crate.bin +0 -0
- package/frontiers-rpg-game/assets/models/forageables/.optimized/abandoned-crate/abandoned-crate.gltf +131 -0
- package/frontiers-rpg-game/assets/models/forageables/.optimized/abandoned-crate/abandoned-crate.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/forageables/.optimized/abandoned-crate/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/forageables/.optimized/weathered-stump/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/forageables/.optimized/weathered-stump/weathered-stump-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/forageables/.optimized/weathered-stump/weathered-stump-named-nodes.gltf +521 -0
- package/frontiers-rpg-game/assets/models/forageables/.optimized/weathered-stump/weathered-stump.bin +0 -0
- package/frontiers-rpg-game/assets/models/forageables/.optimized/weathered-stump/weathered-stump.gltf +136 -0
- package/frontiers-rpg-game/assets/models/forageables/.optimized/weathered-stump/weathered-stump.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/forageables/abandoned-crate.gltf +1 -0
- package/frontiers-rpg-game/assets/models/forageables/weathered-stump.gltf +1 -0
- package/frontiers-rpg-game/assets/models/mounts/.optimized/woolran/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/mounts/.optimized/woolran/woolran-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/mounts/.optimized/woolran/woolran-named-nodes.gltf +6889 -0
- package/frontiers-rpg-game/assets/models/mounts/.optimized/woolran/woolran.bin +0 -0
- package/frontiers-rpg-game/assets/models/mounts/.optimized/woolran/woolran.gltf +4486 -0
- package/frontiers-rpg-game/assets/models/mounts/.optimized/woolran/woolran.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/mounts/woolran.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/gravekeeper/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/gravekeeper/gravekeeper-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/gravekeeper/gravekeeper-named-nodes.gltf +3049 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/gravekeeper/gravekeeper.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/gravekeeper/gravekeeper.gltf +1647 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/gravekeeper/gravekeeper.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/herder/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/herder/herder-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/herder/herder-named-nodes.gltf +3259 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/herder/herder.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/herder/herder.gltf +1615 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/herder/herder.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/players/.optimized/player/player-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/players/.optimized/player/player-named-nodes.gltf +7802 -6249
- package/frontiers-rpg-game/assets/models/players/.optimized/player/player.bin +0 -0
- package/frontiers-rpg-game/assets/models/players/.optimized/player/player.gltf +7046 -5480
- package/frontiers-rpg-game/assets/models/players/.optimized/player/player.gltf.md5 +1 -1
- package/frontiers-rpg-game/assets/models/players/player.gltf +1 -1
- package/frontiers-rpg-game/assets/models/weapons/.optimized/chieftan-blade/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/weapons/.optimized/chieftan-blade/chieftan-blade-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/weapons/.optimized/chieftan-blade/chieftan-blade-named-nodes.gltf +726 -0
- package/frontiers-rpg-game/assets/models/weapons/.optimized/chieftan-blade/chieftan-blade.bin +0 -0
- package/frontiers-rpg-game/assets/models/weapons/.optimized/chieftan-blade/chieftan-blade.gltf +335 -0
- package/frontiers-rpg-game/assets/models/weapons/.optimized/chieftan-blade/chieftan-blade.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/weapons/chieftan-blade.gltf +1 -0
- package/frontiers-rpg-game/assets/particles/dirt.png +0 -0
- package/frontiers-rpg-game/assets/ui/index.html +50 -7
- package/frontiers-rpg-game/assets/ui/menus/dialogue.html +30 -4
- package/frontiers-rpg-game/assets/ui/shared/item-stats.html +1 -1
- package/frontiers-rpg-game/assets/ui/shared/item-tooltips.html +19 -2
- package/frontiers-rpg-game/src/GameClock.ts +14 -0
- package/frontiers-rpg-game/src/GameManager.ts +1 -4
- package/frontiers-rpg-game/src/GameRegion.ts +6 -2
- package/frontiers-rpg-game/src/entities/BaseCombatEntity.ts +58 -26
- package/frontiers-rpg-game/src/entities/BaseEntity.ts +10 -3
- package/frontiers-rpg-game/src/entities/enemies/GorkinChieftanEntity.ts +190 -0
- package/frontiers-rpg-game/src/entities/enemies/GorkinEnforcerEntity.ts +87 -0
- package/frontiers-rpg-game/src/entities/enemies/GorkinGruntEntity.ts +113 -0
- package/frontiers-rpg-game/src/entities/enemies/GorkinHunterEntity.ts +90 -0
- package/frontiers-rpg-game/src/entities/enemies/GorkinShamanEntity.ts +154 -0
- package/frontiers-rpg-game/src/entities/enemies/GorkinSwordsmanEntity.ts +121 -0
- package/frontiers-rpg-game/src/entities/enemies/QueenWeaverEntity.ts +8 -0
- package/frontiers-rpg-game/src/entities/enemies/RatkinBruteEntity.ts +14 -0
- package/frontiers-rpg-game/src/entities/enemies/RatkinRangerEntity.ts +8 -0
- package/frontiers-rpg-game/src/entities/enemies/RatkinSpellcasterEntity.ts +8 -0
- package/frontiers-rpg-game/src/entities/enemies/RatkinWarriorEntity.ts +12 -0
- package/frontiers-rpg-game/src/entities/enemies/ReclusiveWeaverEntity.ts +119 -0
- package/frontiers-rpg-game/src/entities/{environmental → enemies}/SpiderWebEntity.ts +14 -8
- package/frontiers-rpg-game/src/entities/enemies/TaintedRatkinBruteEntity.ts +6 -0
- package/frontiers-rpg-game/src/entities/enemies/TaintedRatkinWarriorEntity.ts +4 -0
- package/frontiers-rpg-game/src/entities/enemies/WeaverBroodlingEntity.ts +5 -1
- package/frontiers-rpg-game/src/entities/forageables/AbandonedCrateEntity.ts +57 -0
- package/frontiers-rpg-game/src/entities/forageables/WeatheredStumpEntity.ts +37 -0
- package/frontiers-rpg-game/src/entities/npcs/WoolranEntity.ts +26 -0
- package/frontiers-rpg-game/src/items/ItemClasses.ts +45 -1
- package/frontiers-rpg-game/src/items/ItemUIDataHelper.ts +3 -1
- package/frontiers-rpg-game/src/items/consumables/HealingPotionItem.ts +20 -0
- package/frontiers-rpg-game/src/items/materials/GoldIngotItem.ts +11 -0
- package/frontiers-rpg-game/src/items/materials/GorkinEarItem.ts +10 -0
- package/frontiers-rpg-game/src/items/materials/GorkinEyeItem.ts +10 -0
- package/frontiers-rpg-game/src/items/materials/GorkinFootItem.ts +10 -0
- package/frontiers-rpg-game/src/items/materials/GorkinHandItem.ts +10 -0
- package/frontiers-rpg-game/src/items/materials/GorkinSkullItem.ts +10 -0
- package/frontiers-rpg-game/src/items/materials/IronIngotItem.ts +11 -0
- package/frontiers-rpg-game/src/items/materials/ShackleItem.ts +10 -0
- package/frontiers-rpg-game/src/items/materials/ShatteredSwordItem.ts +10 -0
- package/frontiers-rpg-game/src/items/materials/SilverSlabItem.ts +11 -0
- package/frontiers-rpg-game/src/items/materials/ToughMonsterHide.ts +10 -0
- package/frontiers-rpg-game/src/items/materials/WeaverCarapaceItem.ts +11 -0
- package/frontiers-rpg-game/src/items/materials/WeaverEggItem.ts +11 -0
- package/frontiers-rpg-game/src/items/materials/WeaverHeartItem.ts +10 -0
- package/frontiers-rpg-game/src/items/materials/WeaverSilkItem.ts +10 -0
- package/frontiers-rpg-game/src/items/weapons/ChieftanBladeItem.ts +70 -0
- package/frontiers-rpg-game/src/items/wearables/IronChestplateItem.ts +15 -0
- package/frontiers-rpg-game/src/items/wearables/IronGauntletsItem.ts +14 -0
- package/frontiers-rpg-game/src/items/wearables/IronGrievesItem.ts +14 -0
- package/frontiers-rpg-game/src/items/wearables/IronHelmetItem.ts +15 -0
- package/frontiers-rpg-game/src/items/wearables/IronLeggingsItem.ts +15 -0
- package/frontiers-rpg-game/src/quests/QuestClasses.ts +6 -0
- package/frontiers-rpg-game/src/quests/main/AncientWisdomQuest.ts +125 -0
- package/frontiers-rpg-game/src/quests/main/BlightedHarvestQuest.ts +27 -5
- package/frontiers-rpg-game/src/quests/side/SkullTrinketsQuest.ts +202 -0
- package/frontiers-rpg-game/src/quests/side/WeaverSquashingQuest.ts +128 -0
- package/frontiers-rpg-game/src/regions/chitter-forest/ChitterForestRegion.ts +25 -0
- package/frontiers-rpg-game/src/regions/hearthwilds/HearthwildsRegion.ts +175 -4
- package/frontiers-rpg-game/src/regions/hearthwilds/npcs/ArchivesBookshelf1Entity.ts +136 -0
- package/frontiers-rpg-game/src/regions/hearthwilds/npcs/ArchivesBookshelf2Entity.ts +136 -0
- package/frontiers-rpg-game/src/regions/hearthwilds/npcs/GravekeeperArdenEntity.ts +48 -0
- package/frontiers-rpg-game/src/regions/hearthwilds/npcs/HerderBorisEntity.ts +61 -0
- package/frontiers-rpg-game/src/regions/hearthwilds/npcs/MerchantFonnEntity.ts +62 -0
- package/frontiers-rpg-game/src/regions/hearthwilds/npcs/SurvivorMycelEntity.ts +62 -0
- package/frontiers-rpg-game/src/regions/ratkin-nest/RatkinNestRegion.ts +3 -0
- package/frontiers-rpg-game/src/regions/stalkhaven/npcs/BlacksmithArdenEntity.ts +116 -5
- package/frontiers-rpg-game/src/regions/weavers-hollow/WeaversHollowRegion.ts +1 -1
- package/frontiers-rpg-game/src/systems/Spawner.ts +9 -1
- package/package.json +1 -1
- /package/frontiers-rpg-game/assets/models/npcs/{auctioneer.gltf → gravekeeper.gltf} +0 -0
- /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
|
+
}
|