commit bbbf42993a3df9afef15c2467f13dc6307112a5c Author: QuickBASIC Date: Thu Mar 19 00:07:51 2026 -0400 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..86badfe --- /dev/null +++ b/.gitignore @@ -0,0 +1,51 @@ +# Compiled class files +*.class + +# Log files +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# Maven target folder +/target/ + +# Gradle build folder +/build/ + +# Eclipse +.classpath +.project +.settings/ +bin/ + +# IntelliJ IDEA +.idea/ +*.iml +*.iws +out/ + +# VS Code +.vscode/ + +# NetBeans +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ + +# Mac +.DS_Store + +# Linux +*~ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7840d99 --- /dev/null +++ b/LICENSE @@ -0,0 +1,7 @@ +Copyright © 2026 Mike Justman + +This project and its source code are made available for viewing and review only. +No part of this project may be copied, modified, redistributed, or used in any way +without explicit permission from the copyright holder. + +If you would like to use any part of this project, please contact the author to request permission. diff --git a/README.md b/README.md new file mode 100644 index 0000000..c8b1533 --- /dev/null +++ b/README.md @@ -0,0 +1,114 @@ +# More Golems + +**More Golems** expands the variety of crystal golems in Hytale by adding new elemental variants that spawn naturally throughout the world as well as new spawn locations for wild versions of existing vanilla golems. + +These golems provide additional, balanced ways to obtain **crystal shards and gems**, making them more farmable—especially on multiplayer servers with many players competing for resources. + +The mod keeps the feel of the vanilla game by building on existing golem mechanics while introducing new golem abilities and spawn locations. + +*** + +## Features + +### New Golem Variants + +This mod adds several new crystal golems that exist as **separate NPCs** but still grant **memories for their original golem counterparts**, ensuring they integrate cleanly with existing progression. No vanilla assets or loot tables are overridden. + +Each golem variant: + +* Drops **crystal shards matching its element** +* Drops a **corresponding gemstone** +* Uses **unique combat abilities** +* Fits naturally into the environments where it spawns + +*** + +## Spawn Locations + +New golems appear naturally across the world in locations that fit their themes: + +* ⛰ **High places** (Mountains, Plateaus and Volcanoes) +* ⛏ **Mineshafts** +* 🌴 **Jungle in Zone4** + +*** + +## Vanilla Golem Variants + +| Golem |Crystal |Drops |Spawn | +| -------------------- |------- |----------------------------- |----------------------- | +| Wild Earthen Golem |Green |Green Crystal Shards, Emerald |Zone 1 Swamp / Autumnal | +| Wild Ember Golem |Red |Red Crystal Shards, Ruby |Zone 1/2/3 Mineshafts | +| Wild Sandswept Golem |Yellow |Yellow Crystal Shards, Topaz |Zone 2 Desert | +| Wild Thunder Golem |Blue |Blue Crystal Shards, Sapphire |Zone 3 Mountains | + +## New Golems Added + +| Golem |Crystal |Drops |Spawn | +| -------------------- |------- |-------------------------------- |------------------------------------- | +| Wild Heartfelt Golem |Pink |Pink Crystal Shards, Diamond |Zone 2 Oasis, Zone 4 Jungle | +| Wild Voidsworn Golem |Purple |Purple Crystal Shards, Voidstone |Azure/Savannah/Glacial/Wastes (night) | +| Wild Snowy Golem |White |White Crystal Shards, Sapphire |Zone 3 Glacial | + +## Combat Abilities + +Golems are slightly stronger than their vanilla counterparts. Most have the same HP, but have slightly increased damage and knockback as well as one special ability (used infrequently). + +### Status Effect abilities + +Each golem variant has a special status effect ability based on its element. + +| Golem Type |Ability |Effect |Duration | +| ---------- |------------ |------------------------ |-------- | +| Earthen |⚡ Stun |Disables movement |Short | +| Heartfelt |💘 Enamor |Disables weapon use |Short | +| Ember |🔥 Burn |Fire damage over time |Medium | +| Thunder |🐌 Slow |Reduces movement speed |Medium | +| Frost |🧊 Freeze |Disables ALL movement |Medium | +| Snowy |❄️ Frostbite |Cold damage over time |Medium | +| Voidsworn |🔋 Drain |Drains stamina over time |Medium | + +*** + +### Other abilities + +Additionally, some wild golems may have additional abilities or effects. More are planned, but currently: + +* Wild Thunder Golems may spawn Wind Vortexes when performing the Heavy Spin ability. + +*** + +## Design Philosophy + +The goal of **More Golems** is to: + +* Make **crystal shards renewable and farmable** +* Improve **resource availability for multiplayer servers** +* Maintain **balance with existing progression** +* Add **variety to the world with more golem encounters** +* Add **slightly challenging** golem combat encounters to the world + +*** + +## Other notable differences from vanilla golems. + +* Wild golem **drops have been normalized** i.e. all Golems drop 15 crystal shards vs some only dropping 3-7. +* The Wild Sandswept Golem has had it damage reduced vs vanilla golem. The vanilla Sandswept Golem does 47 damage, which is a lot more than any other vanilla golem (and therefore probably a bug.) The Wild variant added by this mod only does 15 per hit. +* Wild golems have **abilities to knockback, throw, or sideswipe players**. _Several types of them spawn on mountains or other high places. **You have been warned.**_ +* Wild golems are **aggressive to the player**, have slightly increased view distance, and wander (instead of being stationary). +* Since wild golems spawn in a lot more places, **wild golems are neutral to all other mobs** instead of being hostile towards some groups. +* Wild golem **attack patterns are different** than vanilla golems and may vary with golem elemental type (with plans on making them smarter in future updates). +* The Voidsworn Golem is treated as the unimplemented Golem Guardian Void for the purpose of memories. They look the part, but are much smaller, less battleworn versions. + +*** + +## Compatibility + +* Designed to fit seamlessly with existing **mob spawns** +* New NPCs **grant memories for the original golems** +* Does not replace or remove any vanilla content +* Care was taken to chose spawn locations different from Kami's Ore Golems (as to not spam the world with golems all in the same place if using both mods.) + +*** + +_Created by QuickBASIC_ diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Heart/Head.blockymodel b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Heart/Head.blockymodel new file mode 100644 index 0000000..739d4c6 --- /dev/null +++ b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Heart/Head.blockymodel @@ -0,0 +1,367 @@ +{ + "nodes": [ + { + "id": "19", + "name": "Forehead", + "children": [ + { + "id": "43", + "name": "Forehead-Crystal", + "children": [], + "position": { + "x": -11.805969, + "y": 3.473489, + "z": 13.580905 + }, + "orientation": { + "x": 0.29522, + "y": -0.059182, + "z": 0.086007, + "w": 0.949708 + }, + "shape": { + "type": "box", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "size": { + "x": 7, + "y": 9, + "z": 7 + } + }, + "textureLayout": { + "front": { + "offset": { + "x": 6, + "y": 33 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "back": { + "offset": { + "x": 6, + "y": 33 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "left": { + "offset": { + "x": 6, + "y": 33 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "right": { + "offset": { + "x": 6, + "y": 33 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "top": { + "offset": { + "x": 9, + "y": 12 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "bottom": { + "offset": { + "x": 4, + "y": 94 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + } + }, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "reflective" + } + }, + { + "id": "44", + "name": "Forehead-Crystal2", + "children": [], + "position": { + "x": 9.226367, + "y": 4.578009, + "z": 14.929097 + }, + "orientation": { + "x": 0.174123, + "y": 0.000258, + "z": -0.126583, + "w": 0.976554 + }, + "shape": { + "type": "box", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "size": { + "x": 7, + "y": 9, + "z": 7 + } + }, + "textureLayout": { + "front": { + "offset": { + "x": 16, + "y": 28 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "back": { + "offset": { + "x": 16, + "y": 28 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "left": { + "offset": { + "x": 16, + "y": 28 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "right": { + "offset": { + "x": 16, + "y": 28 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "top": { + "offset": { + "x": 9, + "y": 12 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "bottom": { + "offset": { + "x": 10, + "y": 94 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + } + }, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "reflective" + } + }, + { + "id": "45", + "name": "Forehead-Crystal3", + "children": [], + "position": { + "x": -17.086361, + "y": 1.943683, + "z": 13.026779 + }, + "orientation": { + "x": 0.159396, + "y": -0.022271, + "z": 0.422668, + "w": 0.891879 + }, + "shape": { + "type": "box", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "size": { + "x": 7, + "y": 9, + "z": 7 + } + }, + "textureLayout": { + "front": { + "offset": { + "x": 13, + "y": 30 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "back": { + "offset": { + "x": 13, + "y": 30 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "left": { + "offset": { + "x": 13, + "y": 30 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "right": { + "offset": { + "x": 13, + "y": 30 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "top": { + "offset": { + "x": 9, + "y": 14 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "bottom": { + "offset": { + "x": 10, + "y": 91 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + } + }, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "reflective" + } + } + ], + "position": { + "x": 0, + "y": 134.836, + "z": 55.834 + }, + "orientation": { + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "shape": { + "type": "none", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "isPiece": true + }, + "textureLayout": {}, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "flat" + } + } + ], + "lod": "auto" +} \ No newline at end of file diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Heart/Head_Texture.png b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Heart/Head_Texture.png new file mode 100644 index 0000000..c3995a4 Binary files /dev/null and b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Heart/Head_Texture.png differ diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Beard.blockymodel b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Beard.blockymodel new file mode 100644 index 0000000..6b991b8 --- /dev/null +++ b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Beard.blockymodel @@ -0,0 +1,118 @@ +{ + "nodes": [ + { + "id": "0", + "name": "Jaw", + "children": [ + { + "id": "1", + "name": "Node", + "children": [], + "position": { + "x": 0, + "y": -11.263812, + "z": 8.645721 + }, + "orientation": { + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "shape": { + "type": "box", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1.02478, + "y": 1, + "z": 1 + }, + "settings": { + "size": { + "x": 32, + "y": 16, + "z": 16 + } + }, + "visible": true, + "doubleSided": false, + "shadingMode": "flat", + "unwrapMode": "custom", + "textureLayout": { + "front": { + "offset": { + "x": 0, + "y": 16 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "right": { + "offset": { + "x": 16, + "y": 0 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "left": { + "offset": { + "x": 0, + "y": 0 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + } + } + } + } + ], + "position": { + "x": 0, + "y": 0, + "z": 0 + }, + "orientation": { + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "shape": { + "type": "none", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "isPiece": true + }, + "visible": true, + "doubleSided": false, + "shadingMode": "flat", + "unwrapMode": "custom", + "textureLayout": {} + } + } + ], + "lod": "auto" +} \ No newline at end of file diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Beard_Texture.png b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Beard_Texture.png new file mode 100644 index 0000000..89b5c15 Binary files /dev/null and b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Beard_Texture.png differ diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Eye.blockymodel b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Eye.blockymodel new file mode 100644 index 0000000..33ec1d1 --- /dev/null +++ b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Eye.blockymodel @@ -0,0 +1,96 @@ +{ + "nodes": [ + { + "id": "64", + "name": "Head", + "children": [ + { + "id": "63", + "name": "Eye", + "children": [], + "position": { + "x": 0, + "y": -2.5, + "z": 13.5 + }, + "orientation": { + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "shape": { + "type": "quad", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "size": { + "x": 12, + "y": 12 + }, + "normal": "+Z" + }, + "visible": true, + "doubleSided": false, + "shadingMode": "fullbright", + "unwrapMode": "custom", + "textureLayout": { + "front": { + "offset": { + "x": 3, + "y": 3 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + } + } + } + } + ], + "position": { + "x": -0.000073, + "y": 125.328587, + "z": 42.824597 + }, + "orientation": { + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "shape": { + "type": "none", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "isPiece": true + }, + "textureLayout": {}, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "flat" + } + } + ], + "lod": "auto" +} \ No newline at end of file diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Eye_Texture.png b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Eye_Texture.png new file mode 100644 index 0000000..69643ee Binary files /dev/null and b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Eye_Texture.png differ diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Head.blockymodel b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Head.blockymodel new file mode 100644 index 0000000..ea0be2e --- /dev/null +++ b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Head.blockymodel @@ -0,0 +1,367 @@ +{ + "nodes": [ + { + "id": "19", + "name": "Forehead", + "children": [ + { + "id": "43", + "name": "Forehead-Crystal", + "children": [], + "position": { + "x": 1.585914, + "y": 7.628392, + "z": 11.008988 + }, + "orientation": { + "x": -0.00554, + "y": -0.000374, + "z": -0.06357, + "w": 0.997962 + }, + "shape": { + "type": "box", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "size": { + "x": 8, + "y": 9, + "z": 8 + } + }, + "textureLayout": { + "front": { + "offset": { + "x": 6, + "y": 33 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "back": { + "offset": { + "x": 6, + "y": 33 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "left": { + "offset": { + "x": 6, + "y": 33 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "right": { + "offset": { + "x": 6, + "y": 33 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "top": { + "offset": { + "x": 9, + "y": 12 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "bottom": { + "offset": { + "x": 4, + "y": 94 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + } + }, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "reflective" + } + }, + { + "id": "44", + "name": "Forehead-Crystal2", + "children": [], + "position": { + "x": 11.162274, + "y": 4.083729, + "z": 14.839925 + }, + "orientation": { + "x": 0.222233, + "y": 0.017834, + "z": -0.241423, + "w": 0.944462 + }, + "shape": { + "type": "box", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "size": { + "x": 7, + "y": 9, + "z": 7 + } + }, + "textureLayout": { + "front": { + "offset": { + "x": 16, + "y": 28 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "back": { + "offset": { + "x": 16, + "y": 28 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "left": { + "offset": { + "x": 16, + "y": 28 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "right": { + "offset": { + "x": 16, + "y": 28 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "top": { + "offset": { + "x": 9, + "y": 12 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "bottom": { + "offset": { + "x": 10, + "y": 94 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + } + }, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "reflective" + } + }, + { + "id": "45", + "name": "Forehead-Crystal3", + "children": [], + "position": { + "x": -15.722741, + "y": 1.900858, + "z": 13.87061 + }, + "orientation": { + "x": 0.172691, + "y": 0.093047, + "z": 0.442685, + "w": 0.874957 + }, + "shape": { + "type": "box", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "size": { + "x": 7, + "y": 9, + "z": 7 + } + }, + "textureLayout": { + "front": { + "offset": { + "x": 13, + "y": 30 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "back": { + "offset": { + "x": 13, + "y": 30 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "left": { + "offset": { + "x": 13, + "y": 30 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "right": { + "offset": { + "x": 13, + "y": 30 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "top": { + "offset": { + "x": 9, + "y": 14 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "bottom": { + "offset": { + "x": 10, + "y": 91 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + } + }, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "reflective" + } + } + ], + "position": { + "x": 0, + "y": 134.836, + "z": 55.834 + }, + "orientation": { + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "shape": { + "type": "none", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "isPiece": true + }, + "textureLayout": {}, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "flat" + } + } + ], + "lod": "auto" +} \ No newline at end of file diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Head_Texture.png b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Head_Texture.png new file mode 100644 index 0000000..e42b627 Binary files /dev/null and b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Head_Texture.png differ diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Void/Head.blockymodel b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Void/Head.blockymodel new file mode 100644 index 0000000..739d4c6 --- /dev/null +++ b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Void/Head.blockymodel @@ -0,0 +1,367 @@ +{ + "nodes": [ + { + "id": "19", + "name": "Forehead", + "children": [ + { + "id": "43", + "name": "Forehead-Crystal", + "children": [], + "position": { + "x": -11.805969, + "y": 3.473489, + "z": 13.580905 + }, + "orientation": { + "x": 0.29522, + "y": -0.059182, + "z": 0.086007, + "w": 0.949708 + }, + "shape": { + "type": "box", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "size": { + "x": 7, + "y": 9, + "z": 7 + } + }, + "textureLayout": { + "front": { + "offset": { + "x": 6, + "y": 33 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "back": { + "offset": { + "x": 6, + "y": 33 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "left": { + "offset": { + "x": 6, + "y": 33 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "right": { + "offset": { + "x": 6, + "y": 33 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "top": { + "offset": { + "x": 9, + "y": 12 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "bottom": { + "offset": { + "x": 4, + "y": 94 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + } + }, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "reflective" + } + }, + { + "id": "44", + "name": "Forehead-Crystal2", + "children": [], + "position": { + "x": 9.226367, + "y": 4.578009, + "z": 14.929097 + }, + "orientation": { + "x": 0.174123, + "y": 0.000258, + "z": -0.126583, + "w": 0.976554 + }, + "shape": { + "type": "box", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "size": { + "x": 7, + "y": 9, + "z": 7 + } + }, + "textureLayout": { + "front": { + "offset": { + "x": 16, + "y": 28 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "back": { + "offset": { + "x": 16, + "y": 28 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "left": { + "offset": { + "x": 16, + "y": 28 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "right": { + "offset": { + "x": 16, + "y": 28 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "top": { + "offset": { + "x": 9, + "y": 12 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "bottom": { + "offset": { + "x": 10, + "y": 94 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + } + }, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "reflective" + } + }, + { + "id": "45", + "name": "Forehead-Crystal3", + "children": [], + "position": { + "x": -17.086361, + "y": 1.943683, + "z": 13.026779 + }, + "orientation": { + "x": 0.159396, + "y": -0.022271, + "z": 0.422668, + "w": 0.891879 + }, + "shape": { + "type": "box", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "size": { + "x": 7, + "y": 9, + "z": 7 + } + }, + "textureLayout": { + "front": { + "offset": { + "x": 13, + "y": 30 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "back": { + "offset": { + "x": 13, + "y": 30 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "left": { + "offset": { + "x": 13, + "y": 30 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "right": { + "offset": { + "x": 13, + "y": 30 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "top": { + "offset": { + "x": 9, + "y": 14 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + }, + "bottom": { + "offset": { + "x": 10, + "y": 91 + }, + "mirror": { + "x": false, + "y": false + }, + "angle": 0 + } + }, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "reflective" + } + } + ], + "position": { + "x": 0, + "y": 134.836, + "z": 55.834 + }, + "orientation": { + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "shape": { + "type": "none", + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, + "stretch": { + "x": 1, + "y": 1, + "z": 1 + }, + "settings": { + "isPiece": true + }, + "textureLayout": {}, + "unwrapMode": "custom", + "visible": true, + "doubleSided": false, + "shadingMode": "flat" + } + } + ], + "lod": "auto" +} \ No newline at end of file diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Void/Head_Texture.png b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Void/Head_Texture.png new file mode 100644 index 0000000..b3918cb Binary files /dev/null and b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Attachments/Void/Head_Texture.png differ diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Model_Textures/Frost.png b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Model_Textures/Frost.png new file mode 100644 index 0000000..d6a1e08 Binary files /dev/null and b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Model_Textures/Frost.png differ diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Model_Textures/Heart.png b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Model_Textures/Heart.png new file mode 100644 index 0000000..d61a1d9 Binary files /dev/null and b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Model_Textures/Heart.png differ diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Model_Textures/Snow.png b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Model_Textures/Snow.png new file mode 100644 index 0000000..ba74e32 Binary files /dev/null and b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Model_Textures/Snow.png differ diff --git a/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Model_Textures/Void.png b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Model_Textures/Void.png new file mode 100644 index 0000000..9b87b54 Binary files /dev/null and b/src/main/resources/Common/NPC/Elemental/Golem_Crystal/Models/Model_Textures/Void.png differ diff --git a/src/main/resources/Common/ScreenEffects/Blind.png b/src/main/resources/Common/ScreenEffects/Blind.png new file mode 100644 index 0000000..216555f Binary files /dev/null and b/src/main/resources/Common/ScreenEffects/Blind.png differ diff --git a/src/main/resources/Common/ScreenEffects/Drain.png b/src/main/resources/Common/ScreenEffects/Drain.png new file mode 100644 index 0000000..5957da6 Binary files /dev/null and b/src/main/resources/Common/ScreenEffects/Drain.png differ diff --git a/src/main/resources/Common/ScreenEffects/Enamored.png b/src/main/resources/Common/ScreenEffects/Enamored.png new file mode 100644 index 0000000..945b76a Binary files /dev/null and b/src/main/resources/Common/ScreenEffects/Enamored.png differ diff --git a/src/main/resources/Common/ScreenEffects/Shocked.png b/src/main/resources/Common/ScreenEffects/Shocked.png new file mode 100644 index 0000000..98c9e91 Binary files /dev/null and b/src/main/resources/Common/ScreenEffects/Shocked.png differ diff --git a/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Blind.png b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Blind.png new file mode 100644 index 0000000..acdd234 Binary files /dev/null and b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Blind.png differ diff --git a/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Drain.png b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Drain.png new file mode 100644 index 0000000..18c4f7b Binary files /dev/null and b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Drain.png differ diff --git a/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Enamored.png b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Enamored.png new file mode 100644 index 0000000..b8bdfb9 Binary files /dev/null and b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Enamored.png differ diff --git a/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Freeze.png b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Freeze.png new file mode 100644 index 0000000..061a84a Binary files /dev/null and b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Freeze.png differ diff --git a/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Frostbite.png b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Frostbite.png new file mode 100644 index 0000000..c10eb4a Binary files /dev/null and b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Frostbite.png differ diff --git a/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Slow.png b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Slow.png new file mode 100644 index 0000000..939a5f7 Binary files /dev/null and b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Slow.png differ diff --git a/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Stun.png b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Stun.png new file mode 100644 index 0000000..bdd4c36 Binary files /dev/null and b/src/main/resources/Common/UI/StatusEffects/Golem_Wild_Clap_Stun.png differ diff --git a/src/main/resources/Server/Audio/SoundEvents/SFX/Effects/SFX_Effect_Frostbite_Local.json b/src/main/resources/Server/Audio/SoundEvents/SFX/Effects/SFX_Effect_Frostbite_Local.json new file mode 100644 index 0000000..03a9a90 --- /dev/null +++ b/src/main/resources/Server/Audio/SoundEvents/SFX/Effects/SFX_Effect_Frostbite_Local.json @@ -0,0 +1,22 @@ +{ + "Layers": [ + { + "Files": [ + "Sounds/Projectiles/Arrow/Ice_Arrow_Impact_01.ogg", + "Sounds/Projectiles/Arrow/Ice_Arrow_Impact_01.ogg", + "Sounds/Projectiles/Arrow/Ice_Arrow_Impact_01.ogg", + "Sounds/Projectiles/Arrow/Ice_Arrow_Impact_01.ogg" + ], + "RandomSettings": { + "MinVolume": -2, + "MinPitch": -2, + "MaxPitch": 2 + }, + "StartDelay": 0, + "Volume": 6.0 + } + ], + "MaxInstance": 2, + "Volume": 0, + "PreventSoundInterruption": true +} \ No newline at end of file diff --git a/src/main/resources/Server/Audio/SoundEvents/SFX/Effects/SFX_Effect_Frostbite_World.json b/src/main/resources/Server/Audio/SoundEvents/SFX/Effects/SFX_Effect_Frostbite_World.json new file mode 100644 index 0000000..baab8c7 --- /dev/null +++ b/src/main/resources/Server/Audio/SoundEvents/SFX/Effects/SFX_Effect_Frostbite_World.json @@ -0,0 +1,23 @@ +{ + "Layers": [ + { + "Files": [ + "Sounds/Projectiles/Arrow/Ice_Arrow_Impact_01.ogg", + "Sounds/Projectiles/Arrow/Ice_Arrow_Impact_01.ogg", + "Sounds/Projectiles/Arrow/Ice_Arrow_Impact_01.ogg", + "Sounds/Projectiles/Arrow/Ice_Arrow_Impact_01.ogg" + ], + "RandomSettings": { + "MinVolume": -2, + "MinPitch": -2, + "MaxPitch": 2 + }, + "StartDelay": 0, + "Volume": 6.0 + } + ], + "MaxInstance": 5, + "Volume": 0, + "PreventSoundInterruption": true, + "Parent": "SFX_Attn_Moderate" +} \ No newline at end of file diff --git a/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Earth.json b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Earth.json new file mode 100644 index 0000000..7109a24 --- /dev/null +++ b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Earth.json @@ -0,0 +1,49 @@ +{ + "Container": { + "Type": "Multiple", + "Containers": [ + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Stone_Cobble", + "QuantityMin": 25, + "QuantityMax": 25 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Ingredient_Crystal_Green", + "QuantityMin": 15, + "QuantityMax": 15 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Gem_Emerald", + "QuantityMin": 1, + "QuantityMax": 1 + } + } + ] + } + ] + } +} diff --git a/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Flame.json b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Flame.json new file mode 100644 index 0000000..5b31844 --- /dev/null +++ b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Flame.json @@ -0,0 +1,63 @@ +{ + "Container": { + "Type": "Multiple", + "Containers": [ + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Stone_Cobble", + "QuantityMin": 25, + "QuantityMax": 25 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Ingredient_Crystal_Red", + "QuantityMin": 15, + "QuantityMax": 15 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Ingredient_Fabric_Scrap_Cindercloth", + "QuantityMin": 1, + "QuantityMax": 3 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Gem_Ruby", + "QuantityMin": 1, + "QuantityMax": 1 + } + } + ] + } + ] + } +} diff --git a/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Frost.json b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Frost.json new file mode 100644 index 0000000..2edd3f1 --- /dev/null +++ b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Frost.json @@ -0,0 +1,49 @@ +{ + "Container": { + "Type": "Multiple", + "Containers": [ + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Stone_Cobble", + "QuantityMin": 25, + "QuantityMax": 25 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Ingredient_Crystal_Blue", + "QuantityMin": 15, + "QuantityMax": 15 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Gem_Sapphire", + "QuantityMin": 1, + "QuantityMax": 1 + } + } + ] + } + ] + } +} diff --git a/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Heart.json b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Heart.json new file mode 100644 index 0000000..7051264 --- /dev/null +++ b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Heart.json @@ -0,0 +1,49 @@ +{ + "Container": { + "Type": "Multiple", + "Containers": [ + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Stone_Cobble", + "QuantityMin": 25, + "QuantityMax": 25 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Ingredient_Crystal_Pink", + "QuantityMin": 15, + "QuantityMax": 15 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Gem_Diamond", + "QuantityMin": 1, + "QuantityMax": 1 + } + } + ] + } + ] + } +} diff --git a/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Sand.json b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Sand.json new file mode 100644 index 0000000..b3d7cf4 --- /dev/null +++ b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Sand.json @@ -0,0 +1,49 @@ +{ + "Container": { + "Type": "Multiple", + "Containers": [ + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Stone_Cobble", + "QuantityMin": 25, + "QuantityMax": 25 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Ingredient_Crystal_Cyan", + "QuantityMin": 15, + "QuantityMax": 15 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Gem_Zephyr", + "QuantityMin": 1, + "QuantityMax": 1 + } + } + ] + } + ] + } +} diff --git a/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Snow.json b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Snow.json new file mode 100644 index 0000000..1ee6f2d --- /dev/null +++ b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Snow.json @@ -0,0 +1,73 @@ +{ + "Container": { + "Type": "Multiple", + "Containers": [ + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Soil_Snow", + "QuantityMin": 25, + "QuantityMax": 25 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Ingredient_Crystal_White", + "QuantityMin": 15, + "QuantityMax": 15 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Weight": 70, + "Item": { + "ItemId": "Rubble_Ice", + "QuantityMin": 3, + "QuantityMax": 7 + } + }, + { + "Type": "Single", + "Weight": 30, + "Item": { + "ItemId": "Ingredient_Ice_Essence", + "QuantityMin": 3, + "QuantityMax": 7 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Gem_Sapphire", + "QuantityMin": 1, + "QuantityMax": 1 + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Thunder.json b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Thunder.json new file mode 100644 index 0000000..db6849e --- /dev/null +++ b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Thunder.json @@ -0,0 +1,49 @@ +{ + "Container": { + "Type": "Multiple", + "Containers": [ + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Stone_Cobble", + "QuantityMin": 25, + "QuantityMax": 25 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Ingredient_Crystal_Yellow", + "QuantityMin": 15, + "QuantityMax": 15 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Gem_Topaz", + "QuantityMin": 1, + "QuantityMax": 1 + } + } + ] + } + ] + } +} diff --git a/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Void.json b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Void.json new file mode 100644 index 0000000..c7f087e --- /dev/null +++ b/src/main/resources/Server/Drops/NPCs/Elemental/Drop_Golem_Wild_Crystal_Void.json @@ -0,0 +1,77 @@ +{ + "Container": { + "Type": "Multiple", + "Containers": [ + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Marble", + "QuantityMin": 25, + "QuantityMax": 25 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Ingredient_Crystal_Purple", + "QuantityMin": 15, + "QuantityMax": 15 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Empty", + "Weight": 70 + }, + { + "Type": "Single", + "Weight": 25, + "Item": { + "ItemId": "Ingredient_Void_Essence", + "QuantityMin": 3, + "QuantityMax": 7 + } + }, + { + "Type": "Single", + "Weight": 5, + "Item": { + "ItemId": "Ingredient_Voidheart", + "QuantityMin": 1, + "QuantityMax": 2 + } + } + ] + }, + { + "Type": "Choice", + "Weight": 100, + "Containers": [ + { + "Type": "Single", + "Item": { + "ItemId": "Rock_Gem_Voidstone", + "QuantityMin": 1, + "QuantityMax": 1 + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Blind.json b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Blind.json new file mode 100644 index 0000000..fca377a --- /dev/null +++ b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Blind.json @@ -0,0 +1,20 @@ +{ + "ApplicationEffects": { + "EntityBottomTint": "#000000", + "EntityTopTint": "#000000", + "ModelVFXId": "Freeze", + "ScreenEffect": "ScreenEffects/Blind.png", + "Particles": [ + { "SystemId": "Effect_Snow" }, + { "SystemId": "Effect_Snow_Impact" } + ] + + }, + + "OverlapBehavior": "Extend", + "RemovalBehavior": "Duration", + "Infinite": false, + "Debuff": true, + "StatusEffectIcon": "UI/StatusEffects/Golem_Wild_Clap_Blind.png", + "Duration": 5 +} \ No newline at end of file diff --git a/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Burn.json b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Burn.json new file mode 100644 index 0000000..55b9074 --- /dev/null +++ b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Burn.json @@ -0,0 +1,32 @@ +{ + "Parent": "Burn_Template", + "ApplicationEffects": { + "EntityBottomTint": "#100600", + "EntityTopTint": "#cf2302", + "ScreenEffect": "ScreenEffects/Fire.png", + "WorldSoundEventId": "SFX_Effect_Burn_World", + "LocalSoundEventId": "SFX_Effect_Burn_Local", + "Particles": [ + { + "SystemId": "Effect_Fire" + } + ], + "ModelVFXId": "Burn" + }, + "DamageCalculatorCooldown": 1, + "DamageCalculator": { + "BaseDamage": { + "Fire": 7 + } + }, + "DamageEffects": { + "WorldSoundEventId": "SFX_Effect_Burn_World", + "PlayerSoundEventId": "SFX_Effect_Burn_Local" + }, + "OverlapBehavior": "Overwrite", + "Infinite": false, + "Debuff": true, + "StatusEffectIcon": "UI/StatusEffects/Burn.png", + "Duration": 5, + "DeathMessageKey": "server.general.deathCause.burn" +} diff --git a/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Drain.json b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Drain.json new file mode 100644 index 0000000..ff62ee4 --- /dev/null +++ b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Drain.json @@ -0,0 +1,19 @@ +{ + "StatModifiers": { + "Stamina": -33 + }, + "ValueType": "Percent", + + "ApplicationEffects": { + "ScreenEffect": "ScreenEffects/Drain.png", + "EntityBottomTint": "#800080", + "EntityTopTint": "#800080" + }, + "DamageCalculatorCooldown": 1, + "OverlapBehavior": "Overwrite", + "RemovalBehavior": "Duration", + "Infinite": false, + "Duration": 8, + "Debuff": true, + "StatusEffectIcon": "UI/StatusEffects/Golem_Wild_Clap_Drain.png" +} diff --git a/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Enamored.json b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Enamored.json new file mode 100644 index 0000000..e6835f8 --- /dev/null +++ b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Enamored.json @@ -0,0 +1,24 @@ +{ + "Duration": 4, + "StatusEffectIcon": "UI/StatusEffects/Golem_Wild_Clap_Enamored.png", + "ApplicationEffects": { + "EntityBottomTint": "#da72ff", + "ScreenEffect": "ScreenEffects/Enamored.png", + "Particles": [{ + "SystemId": "Stunned", + "TargetEntityPart": "Entity", + "TargetNodeName": "Head" + } + ], + "EntityTopTint": "#da72ff", + + "AbilityEffects": { + "Disabled": [ + "Primary", + "Secondary", + "Ability1", + "Ability3" + ] + } + } +} diff --git a/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Freeze.json b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Freeze.json new file mode 100644 index 0000000..3736d5b --- /dev/null +++ b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Freeze.json @@ -0,0 +1,31 @@ +{ + "Parent": "Freeze", + "ApplicationEffects": { + "EntityBottomTint": "#80ecff", + "EntityTopTint": "#ffffff", + "ModelVFXId": "Freeze", + "ScreenEffect": "ScreenEffects/Snow.png", + "Particles": [ + { "SystemId": "Effect_Snow" }, + { "SystemId": "Effect_Snow_Impact" } + ], + "MovementEffects": { + "DisableAll": true + } + }, + "AbilityEffects": { + "Disabled": [ + "Primary", + "Secondary", + "Ability1", + "Ability3" + ] + }, + + "OverlapBehavior": "Extend", + "RemovalBehavior": "Duration", + "Infinite": false, + "Debuff": true, + "StatusEffectIcon": "UI/StatusEffects/Golem_Wild_Clap_Freeze.png", + "Duration": 5 +} \ No newline at end of file diff --git a/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Frostbite.json b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Frostbite.json new file mode 100644 index 0000000..4c11a22 --- /dev/null +++ b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Frostbite.json @@ -0,0 +1,31 @@ +{ + "Parent": "Burn_Template", + "ApplicationEffects": { + "EntityBottomTint": "#c9f2f0", + "EntityTopTint": "#c9f2f0", + "ScreenEffect": "ScreenEffects/Snow.png", + "WorldSoundEventId": "SFX_Effect_Frostbite_World", + "LocalSoundEventId": "SFX_Effect_Frostbite_Local", + "Particles": [ + { "SystemId": "Effect_Snow" }, + { "SystemId": "Effect_Snow_Impact" } + ], + "ModelVFXId": "Burn" + }, + "DamageCalculatorCooldown": 1, + "DamageCalculator": { + "BaseDamage": { + "Physical": 7 + } + }, + "DamageEffects": { + "WorldSoundEventId": "SFX_Effect_Frostbite_World", + "PlayerSoundEventId": "SFX_Effect_Frostbite_Local" + }, + "OverlapBehavior": "Overwrite", + "Infinite": false, + "Debuff": true, + "StatusEffectIcon": "UI/StatusEffects/Golem_Wild_Clap_Frostbite.png", + "Duration": 5, + "DeathMessageKey": "server.general.deathCause.burn" +} diff --git a/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Slow.json b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Slow.json new file mode 100644 index 0000000..74315c5 --- /dev/null +++ b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Slow.json @@ -0,0 +1,14 @@ +{ + "Parent": "Slow", + "ApplicationEffects": { + "ScreenEffect": "ScreenEffects/Shocked.png", + "EntityBottomTint": "#FFFF00", + "EntityTopTint": "#FFFF00" + }, + "OverlapBehavior": "Extend", + "RemovalBehavior": "Duration", + "Infinite": false, + "Debuff": true, + "Duration": 5, + "StatusEffectIcon": "UI/StatusEffects/Golem_Wild_Clap_Slow.png" +} \ No newline at end of file diff --git a/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Stun.json b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Stun.json new file mode 100644 index 0000000..00ea16c --- /dev/null +++ b/src/main/resources/Server/Entity/Effects/Status/Golem_Wild_Clap_Stun.json @@ -0,0 +1,20 @@ +{ + "Duration": 2, + + "ApplicationEffects": { + "EntityBottomTint": "#da72ff", + + "Particles": [{ + "SystemId": "Stunned", + "TargetEntityPart": "Entity", + "TargetNodeName": "Head" + } + ], + "EntityTopTint": "#da72ff", + + "MovementEffects": { + "DisableAll": true + } + }, + "StatusEffectIcon": "UI/StatusEffects/Golem_Wild_Clap_Stun.png" +} diff --git a/src/main/resources/Server/Item/Interactions/NPCs/Elemental/Golem_Crystal/Golem_Wild_Wind_Vortex.json b/src/main/resources/Server/Item/Interactions/NPCs/Elemental/Golem_Crystal/Golem_Wild_Wind_Vortex.json new file mode 100644 index 0000000..7c45687 --- /dev/null +++ b/src/main/resources/Server/Item/Interactions/NPCs/Elemental/Golem_Crystal/Golem_Wild_Wind_Vortex.json @@ -0,0 +1,20 @@ +{ + "Type": "Simple", + "Effects": { + "ItemPlayerAnimationsId": "Feran_Staff", + "ItemAnimationId": "CastSummon" + }, + "$Comment": "Prepare Delay", + "RunTime": 1, + "Next": { + "Type": "LaunchProjectile", + "RunTime": 0.2, + "Effects": { + "WorldSoundEventId": "SFX_Staff_Ice_Shoot" + }, + "ProjectileId": "Golem_Wild_Wind_Vortex", + "Tags": { + "AimingReference": [] + } + } +} \ No newline at end of file diff --git a/src/main/resources/Server/Item/RootInteractions/NPCs/Elemental/Golem/Root_NPC_Golem_Wild_Crystal_Attack.json b/src/main/resources/Server/Item/RootInteractions/NPCs/Elemental/Golem/Root_NPC_Golem_Wild_Crystal_Attack.json new file mode 100644 index 0000000..3c98dab --- /dev/null +++ b/src/main/resources/Server/Item/RootInteractions/NPCs/Elemental/Golem/Root_NPC_Golem_Wild_Crystal_Attack.json @@ -0,0 +1,23 @@ +{ + "Interactions": [ + { + "Type": "Chaining", + "ChainId": "Slashes", + "ChainingAllowance": 15, + "Next": [ + "Golem_Crystal_Swing_Left", + "Golem_Crystal_Swing_Right", + "Golem_Crystal_Spin", + "Golem_Crystal_Ground_Slam", + "Golem_Crystal_Clap", + "Golem_Crystal_Spin_Heavy", + "Golem_Crystal_Stomp" + ] + } + ], + "Tags": { + "Attack": [ + "Melee" + ] + } +} \ No newline at end of file diff --git a/src/main/resources/Server/Item/RootInteractions/NPCs/Elemental/Golem/Root_NPC_Golem_Wild_Crystal_Heart_Attack.json b/src/main/resources/Server/Item/RootInteractions/NPCs/Elemental/Golem/Root_NPC_Golem_Wild_Crystal_Heart_Attack.json new file mode 100644 index 0000000..d0a7b1d --- /dev/null +++ b/src/main/resources/Server/Item/RootInteractions/NPCs/Elemental/Golem/Root_NPC_Golem_Wild_Crystal_Heart_Attack.json @@ -0,0 +1,22 @@ +{ + "Interactions": [ + { + "Type": "Chaining", + "ChainId": "Slashes", + "ChainingAllowance": 15, + "Next": [ + "Golem_Crystal_Clap", + "Golem_Crystal_Spin", + "Golem_Crystal_Ground_Slam", + "Golem_Crystal_Clap", + "Golem_Crystal_Spin_Heavy", + "Golem_Crystal_Stomp" + ] + } + ], + "Tags": { + "Attack": [ + "Melee" + ] + } +} \ No newline at end of file diff --git a/src/main/resources/Server/Item/RootInteractions/NPCs/Elemental/Golem/Root_NPC_Golem_Wild_Crystal_Thunder_Attack.json b/src/main/resources/Server/Item/RootInteractions/NPCs/Elemental/Golem/Root_NPC_Golem_Wild_Crystal_Thunder_Attack.json new file mode 100644 index 0000000..71e3248 --- /dev/null +++ b/src/main/resources/Server/Item/RootInteractions/NPCs/Elemental/Golem/Root_NPC_Golem_Wild_Crystal_Thunder_Attack.json @@ -0,0 +1,24 @@ +{ + "Interactions": [ + { + "Type": "Chaining", + "ChainId": "Slashes", + "ChainingAllowance": 15, + "Next": [ + "Wild_Golem_Wind_Vortex", + "Golem_Crystal_Swing_Left", + "Golem_Crystal_Swing_Right", + "Golem_Crystal_Spin", + "Golem_Crystal_Ground_Slam", + "Golem_Crystal_Clap", + "Golem_Crystal_Spin_Heavy", + "Golem_Crystal_Stomp" + ] + } + ], + "Tags": { + "Attack": [ + "Melee" + ] + } +} \ No newline at end of file diff --git a/src/main/resources/Server/Item/RootInteractions/NPCs/Elemental/Golem/Root_NPC_Golem_Wild_Crystal_Void_Attack.json b/src/main/resources/Server/Item/RootInteractions/NPCs/Elemental/Golem/Root_NPC_Golem_Wild_Crystal_Void_Attack.json new file mode 100644 index 0000000..e1f5af3 --- /dev/null +++ b/src/main/resources/Server/Item/RootInteractions/NPCs/Elemental/Golem/Root_NPC_Golem_Wild_Crystal_Void_Attack.json @@ -0,0 +1,21 @@ +{ + "Interactions": [ + { + "Type": "Chaining", + "ChainId": "Slashes", + "ChainingAllowance": 15, + "Next": [ + "Golem_Crystal_Swing_Right", + "Golem_Crystal_Clap", + "Golem_Crystal_Spin", + "Golem_Crystal_Spin_Heavy", + "Golem_Crystal_Stomp" + ] + } + ], + "Tags": { + "Attack": [ + "Melee" + ] + } +} \ No newline at end of file diff --git a/src/main/resources/Server/Languages/en-US/server.lang b/src/main/resources/Server/Languages/en-US/server.lang new file mode 100644 index 0000000..9ce9f7c --- /dev/null +++ b/src/main/resources/Server/Languages/en-US/server.lang @@ -0,0 +1,8 @@ +npcRoles.Golem_Wild_Crystal_Earth.name = Wild Earthen Golem +npcRoles.Golem_Wild_Crystal_Flame.name = Wild Ember Golem +npcRoles.Golem_Wild_Crystal_Frost.name = Wild Frost Golem +npcRoles.Golem_Wild_Crystal_Frost.name = Wild Snowy Golem +npcRoles.Golem_Wild_Crystal_Sand.name = Wild Sandswept Golem +npcRoles.Golem_Wild_Crystal_Heart.name = Wild Heartfelt Golem +npcRoles.Golem_Wild_Crystal_Thunder.name = Wild Thunder Golem +npcRoles.Golem_Wild_Crystal_Void.name = Wild Voidsworn Golem \ No newline at end of file diff --git a/src/main/resources/Server/Models/Golem_Crystal/Elemental/Golem_Crystal_Heart.json b/src/main/resources/Server/Models/Golem_Crystal/Elemental/Golem_Crystal_Heart.json new file mode 100644 index 0000000..0283aa9 --- /dev/null +++ b/src/main/resources/Server/Models/Golem_Crystal/Elemental/Golem_Crystal_Heart.json @@ -0,0 +1,276 @@ +{ + "Parent": "Player", + "Model": "NPC/Elemental/Golem_Crystal/Models/Model.blockymodel", + "Texture": "NPC/Elemental/Golem_Crystal/Models/Model_Textures/Heart.png", + "EyeHeight": 2, + "CrouchOffset": -0.35, + "HitBox": { + "Max": { + "X": 0.85, + "Y": 2.8, + "Z": 0.85 + }, + "Min": { + "X": -0.85, + "Y": 0, + "Z": -0.85 + } + }, + "DefaultAttachments": [ + { + "Model": "NPC/Elemental/Golem_Crystal/Models/Attachments/Heart/Head.blockymodel", + "Texture": "NPC/Elemental/Golem_Crystal/Models/Attachments/Heart/Head_Texture.png" + } + ], + "AnimationSets": { + "Idle": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Idle.blockyanim", + "Speed": 0.5 + } + ] + }, + "Walk": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Walk.blockyanim", + "BlendingDuration": 0.2, + "Speed": 1 + } + ] + }, + "WalkBackward": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Walk_Backward.blockyanim" + } + ] + }, + "Run": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Run.blockyanim", + "Speed": 1 + } + ] + }, + "Crouch": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Crouch.blockyanim", + "BlendingDuration": 0.1 + } + ] + }, + "CrouchWalk": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Crouch_Walk.blockyanim", + "BlendingDuration": 0.1 + } + ] + }, + "CrouchWalkBackward": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Crouch_Walk_Backward.blockyanim", + "BlendingDuration": 0.1, + "Looping": true + } + ] + }, + "Jump": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Jump.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "Speed": 0.8 + } + ] + }, + "JumpWalk": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Jump.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "Speed": 0.8 + } + ] + }, + "JumpRun": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Jump_Far.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "Speed": 0.8 + }, + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Jump_Far2.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "Speed": 0.8 + } + ] + }, + "Fall": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Fall.blockyanim", + "BlendingDuration": 0.4 + }, + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Fall2.blockyanim", + "BlendingDuration": 0.4 + } + ] + }, + "FallFar": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Fall_Far.blockyanim", + "BlendingDuration": 0.4 + } + ] + }, + "Alerted": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Alerted.blockyanim", + "Looping": false, + "SoundEventId": "SFX_Golem_Earth_Alerted" + } + ] + }, + "FluidIdle": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Idle.blockyanim", + "Speed": 0.3 + } + ] + }, + "FluidWalk": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Walk.blockyanim", + "Speed": 0.6 + } + ] + }, + "FluidWalkBackward": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Walk_Backward.blockyanim", + "Speed": 0.6 + } + ] + }, + "FluidRun": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Run.blockyanim", + "Speed": 0.6 + } + ] + }, + "ClimbIdle": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Climb/Climb_Idle.blockyanim", + "Speed": 0.5 + } + ] + }, + "ClimbUp": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Climb/Climb_Up.blockyanim" + } + ] + }, + "ClimbDown": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Climb/Climb_Down.blockyanim" + } + ] + }, + "ClimbLeft": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Climb/Climb_Left.blockyanim" + } + ] + }, + "ClimbRight": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Climb/Climb_Right.blockyanim" + } + ] + }, + "Hurt": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Damage/Hurt.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "SoundEventId": "SFX_Golem_Earth_Hurt" + }, + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Damage/Hurt2.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "SoundEventId": "SFX_Golem_Earth_Hurt" + } + ] + }, + "Death": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Damage/Death.blockyanim", + "Looping": false, + "SoundEventId": "SFX_Golem_Earth_Death" + } + ] + }, + "Laydown": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Laydown.blockyanim", + "Looping": false, + "SoundEventId": "SFX_Golem_Earth_Laydown" + } + ] + }, + "Sleep": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Sleep.blockyanim" + } + ] + }, + "Wake": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Wake.blockyanim", + "Looping": false, + "SoundEventId": "SFX_Golem_Earth_Wake" + } + ] + }, + "Spawn": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Spawn.blockyanim", + "BlendingDuration": 0, + "Looping": false + } + ] + } + } +} diff --git a/src/main/resources/Server/Models/Golem_Crystal/Elemental/Golem_Crystal_Snow.json b/src/main/resources/Server/Models/Golem_Crystal/Elemental/Golem_Crystal_Snow.json new file mode 100644 index 0000000..8ceb38a --- /dev/null +++ b/src/main/resources/Server/Models/Golem_Crystal/Elemental/Golem_Crystal_Snow.json @@ -0,0 +1,72 @@ +{ + "Parent": "Golem_Crystal_Earth", + "Texture": "NPC/Elemental/Golem_Crystal/Models/Model_Textures/Snow.png", + "DefaultAttachments": [ + { + "Model": "NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Beard.blockymodel", + "Texture": "NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Beard_Texture.png" + }, + { + "Model": "NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Eye.blockymodel", + "Texture": "NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Eye_Texture.png" + }, + { + "Model": "NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Head.blockymodel", + "Texture": "NPC/Elemental/Golem_Crystal/Models/Attachments/Snow/Head_Texture.png" + } + ], + "AnimationSets": { + "Alerted": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Alerted.blockyanim", + "Looping": false, + "SoundEventId": "SFX_Golem_Frost_Alerted" + } + ] + }, + "Hurt": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Damage/Hurt.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "SoundEventId": "SFX_Golem_Frost_Hurt" + }, + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Damage/Hurt2.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "SoundEventId": "SFX_Golem_Frost_Hurt" + } + ] + }, + "Death": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Damage/Death.blockyanim", + "Looping": false, + "SoundEventId": "SFX_Golem_Frost_Death" + } + ] + }, + "Laydown": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Laydown.blockyanim", + "Looping": false, + "SoundEventId": "SFX_Golem_Frost_Laydown" + } + ] + }, + "Wake": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Wake.blockyanim", + "Looping": false, + "SoundEventId": "SFX_Golem_Frost_Wake" + } + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/Server/Models/Golem_Crystal/Elemental/Golem_Crystal_Void.json b/src/main/resources/Server/Models/Golem_Crystal/Elemental/Golem_Crystal_Void.json new file mode 100644 index 0000000..ebcd10d --- /dev/null +++ b/src/main/resources/Server/Models/Golem_Crystal/Elemental/Golem_Crystal_Void.json @@ -0,0 +1,276 @@ +{ + "Parent": "Player", + "Model": "NPC/Elemental/Golem_Crystal/Models/Model.blockymodel", + "Texture": "NPC/Elemental/Golem_Crystal/Models/Model_Textures/Void.png", + "EyeHeight": 2, + "CrouchOffset": -0.35, + "HitBox": { + "Max": { + "X": 0.85, + "Y": 2.8, + "Z": 0.85 + }, + "Min": { + "X": -0.85, + "Y": 0, + "Z": -0.85 + } + }, + "DefaultAttachments": [ + { + "Model": "NPC/Elemental/Golem_Crystal/Models/Attachments/Void/Head.blockymodel", + "Texture": "NPC/Elemental/Golem_Crystal/Models/Attachments/Void/Head_Texture.png" + } + ], + "AnimationSets": { + "Idle": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Idle.blockyanim", + "Speed": 0.5 + } + ] + }, + "Walk": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Walk.blockyanim", + "BlendingDuration": 0.2, + "Speed": 1 + } + ] + }, + "WalkBackward": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Walk_Backward.blockyanim" + } + ] + }, + "Run": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Run.blockyanim", + "Speed": 1 + } + ] + }, + "Crouch": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Crouch.blockyanim", + "BlendingDuration": 0.1 + } + ] + }, + "CrouchWalk": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Crouch_Walk.blockyanim", + "BlendingDuration": 0.1 + } + ] + }, + "CrouchWalkBackward": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Crouch_Walk_Backward.blockyanim", + "BlendingDuration": 0.1, + "Looping": true + } + ] + }, + "Jump": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Jump.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "Speed": 0.8 + } + ] + }, + "JumpWalk": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Jump.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "Speed": 0.8 + } + ] + }, + "JumpRun": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Jump_Far.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "Speed": 0.8 + }, + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Jump_Far2.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "Speed": 0.8 + } + ] + }, + "Fall": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Fall.blockyanim", + "BlendingDuration": 0.4 + }, + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Fall2.blockyanim", + "BlendingDuration": 0.4 + } + ] + }, + "FallFar": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Fall_Far.blockyanim", + "BlendingDuration": 0.4 + } + ] + }, + "Alerted": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Alerted.blockyanim", + "Looping": false, + "SoundEventId": "SFX_Golem_Earth_Alerted" + } + ] + }, + "FluidIdle": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Idle.blockyanim", + "Speed": 0.3 + } + ] + }, + "FluidWalk": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Walk.blockyanim", + "Speed": 0.6 + } + ] + }, + "FluidWalkBackward": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Walk_Backward.blockyanim", + "Speed": 0.6 + } + ] + }, + "FluidRun": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Run.blockyanim", + "Speed": 0.6 + } + ] + }, + "ClimbIdle": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Climb/Climb_Idle.blockyanim", + "Speed": 0.5 + } + ] + }, + "ClimbUp": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Climb/Climb_Up.blockyanim" + } + ] + }, + "ClimbDown": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Climb/Climb_Down.blockyanim" + } + ] + }, + "ClimbLeft": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Climb/Climb_Left.blockyanim" + } + ] + }, + "ClimbRight": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Climb/Climb_Right.blockyanim" + } + ] + }, + "Hurt": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Damage/Hurt.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "SoundEventId": "SFX_Golem_Earth_Hurt" + }, + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Damage/Hurt2.blockyanim", + "BlendingDuration": 0.1, + "Looping": false, + "SoundEventId": "SFX_Golem_Earth_Hurt" + } + ] + }, + "Death": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Damage/Death.blockyanim", + "Looping": false, + "SoundEventId": "SFX_Golem_Earth_Death" + } + ] + }, + "Laydown": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Laydown.blockyanim", + "Looping": false, + "SoundEventId": "SFX_Golem_Earth_Laydown" + } + ] + }, + "Sleep": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Sleep.blockyanim" + } + ] + }, + "Wake": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Wake.blockyanim", + "Looping": false, + "SoundEventId": "SFX_Golem_Earth_Wake" + } + ] + }, + "Spawn": { + "Animations": [ + { + "Animation": "NPC/Elemental/Golem_Crystal/Animations/Default/Spawn.blockyanim", + "BlendingDuration": 0, + "Looping": false + } + ] + } + } +} diff --git a/src/main/resources/Server/Models/Projectiles/Elemental/Golem/Golem_Wild_Wind_Vortex.json b/src/main/resources/Server/Models/Projectiles/Elemental/Golem/Golem_Wild_Wind_Vortex.json new file mode 100644 index 0000000..0b659a6 --- /dev/null +++ b/src/main/resources/Server/Models/Projectiles/Elemental/Golem/Golem_Wild_Wind_Vortex.json @@ -0,0 +1,52 @@ +{ + "Parent": "Tornado", + "Model": "Items/Projectiles/Tornado.blockymodel", + "Texture": "Items/Projectiles/Tornado_Texture.png", + "EyeHeight": 0, + "HitBox": { + "Max": { + "X": 1, + "Y": 2, + "Z": 1 + }, + "Min": { + "X": -1, + "Y": 0, + "Z": -1 + } + }, + "MinScale": 2, + "MaxScale": 2, + "Camera": { + "Pitch": { + "AngleRange": { + "Max": 0, + "Min": 0 + }, + "TargetNodes": [ + "Head" + ] + }, + "Yaw": { + "AngleRange": { + "Max": 0, + "Min": 0 + }, + "TargetNodes": [ + "Head" + ] + } + }, + "AnimationSets": { + "Idle": { + "Animations": [ + { + "Animation": "Items/Projectiles/Tornado_Spin.blockyanim", + "BlendingDuration": 0, + "SoundEventId": "SFX_Tornado", + "Speed": 1 + } + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Attitude/Roles/WildGolem.json b/src/main/resources/Server/NPC/Attitude/Roles/WildGolem.json new file mode 100644 index 0000000..86f9aca --- /dev/null +++ b/src/main/resources/Server/NPC/Attitude/Roles/WildGolem.json @@ -0,0 +1,17 @@ +{ + "Groups": { + "Friendly": [ + "Golem", + "WildGolem" + ], + "Ignore": [ + "Aggressive", + "Neutral", + "Passive", + "Vermine" + ], + "Hostile": [ + "Player" + ] + } +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Groups/Elemental/WildGolem.json b/src/main/resources/Server/NPC/Groups/Elemental/WildGolem.json new file mode 100644 index 0000000..03f4c0b --- /dev/null +++ b/src/main/resources/Server/NPC/Groups/Elemental/WildGolem.json @@ -0,0 +1,5 @@ +{ + "IncludeRoles": [ + "Golem_Wild*" + ] +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Earth.json b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Earth.json new file mode 100644 index 0000000..fdf2c4e --- /dev/null +++ b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Earth.json @@ -0,0 +1,266 @@ +{ + "Type": "Variant", + "Reference": "Template_Intelligent", + "Modify": { + "MaxHealth": 160, + "ViewSector": 150, + "DropList": "Drop_Golem_Wild_Crystal_Earth", + "Appearance": "Golem_Crystal_Earth", + "Weapons": [], + "OffHand": [], + "MaxSpeed": 7, + "ViewRange": 30, + "AbsoluteDetectionRange": 10, + "AttitudeGroup": "WildGolem", + "DisableDamageGroups": [ + "Self", + "Void", + "WildGolem" + ], + "Attack": "Root_NPC_Golem_Wild_Crystal_Attack", + "AttackDistance": 2.5, + "TargetRange": 2.5, + "CombatBehaviorDistance": 6.5, + "BlockProbability": 0, + "DesiredAttackDistanceRange": [ + 2, + 2.4 + ], + "CombatAttackPostDelay": [ + 0.2, + 0.2 + ], + "CombatAttackPreDelay": [ + 0.2, + 0.2 + ], + "CombatStrafeWeight": 0, + "CombatBackOffAfterAttack": false, + "CombatRelativeTurnSpeed": 0.25, + "LeashDistance": 30, + "HardLeashDistance": 40, + + "IsMemory": true, + "MemoriesCategory": "Elemental", + "MemoriesNameOverride": "Golem_Crystal_Earth", + "NameTranslationKey": { + "Compute": "NameTranslationKey" + }, + "_InteractionVars": { + "Swing_Left_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Left_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 10 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Swing_Right_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Right_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 10 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": -5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 10 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Ground_Slam_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Ground_Slam_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 10 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -1.5, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 25 + } + } + } + ] + }, + "Stomp_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Stomp_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 10 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Heavy_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Heavy_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 10 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Clap_Damage": { + "Interactions": [ + { + "Type": "CooldownCondition", + "Id": "Golem_Wild_Clap_Stun", + "Next": { + "Type": "Serial", + "Interactions": [ + { + "Type": "TriggerCooldown", + "Cooldown": { + "Id": "Golem_Wild_Clap_Stun", + "Cooldown": 8 + } + }, + { + "Type": "Simple", + "RunTime": 0.1, + "Effects": { + "Particles": [ + { + "SystemId": "Impact_Ice_Cloud", + "TargetEntityPart": "Entity", + "PositionOffset": { + "X": 0, + "Y": 0.75, + "Z": 1.5 + }, + "RotationOffset": { + "Pitch": -30, + "Roll": 0, + "Yaw": 90 + } + } + ] + } + }, + { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + }, + "Next": { + "Type": "ClearEntityEffect", + "Entity": "Target", + "EntityEffectId": "Golem_Wild_Clap_Stun", + "Next": { + "Type": "ApplyEffect", + "Entity": "Target", + "EffectId": "Golem_Wild_Clap_Stun" + } + } + } + ] + }, + "Failed": { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + } + } + } + ] + } + } + }, + "Parameters": { + "NameTranslationKey": { + "Value": "server.npcRoles.Golem_Wild_Crystal_Earth.name", + "Description": "Translation key for NPC name display" + } + } +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Flame.json b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Flame.json new file mode 100644 index 0000000..e0036f4 --- /dev/null +++ b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Flame.json @@ -0,0 +1,269 @@ +{ + "Type": "Variant", + "Reference": "Template_Intelligent", + "Modify": { + "MaxHealth": 283, + "ViewSector": 150, + "DropList": "Drop_Golem_Wild_Crystal_Flame", + "Appearance": "Golem_Crystal_Flame", + "Weapons": [], + "OffHand": [], + "MaxSpeed": 5, + "ViewRange": 30, + "AbsoluteDetectionRange": 10, + "AttitudeGroup": "WildGolem", + "DisableDamageGroups": [ + "Self", + "Void", + "WildGolem" + ], + "Attack": "Root_NPC_Golem_Wild_Crystal_Attack", + "AttackDistance": 2.5, + "TargetRange": 2.5, + "CombatBehaviorDistance": 6.5, + "BlockProbability": 0, + "DesiredAttackDistanceRange": [ + 2, + 2.4 + ], + "CombatAttackPostDelay": [ + 0.2, + 0.2 + ], + "CombatAttackPreDelay": [ + 0.2, + 0.2 + ], + "CombatStrafeWeight": 0, + "CombatBackOffAfterAttack": false, + "CombatRelativeTurnSpeed": 0.25, + "LeashDistance": 30, + "HardLeashDistance": 40, + + "IsMemory": true, + "MemoriesCategory": "Elemental", + "MemoriesNameOverride": "Golem_Crystal_Flame", + "NameTranslationKey": { + "Compute": "NameTranslationKey" + }, + "_CombatConfig": { + "EntityEffect": "Immunity_Fire" + }, + "_InteractionVars": { + "Swing_Left_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Left_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Swing_Right_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Right_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": -5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Ground_Slam_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Ground_Slam_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -1.5, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 25 + } + } + } + ] + }, + "Stomp_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Stomp_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Heavy_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Heavy_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Clap_Damage": { + "Interactions": [ + { + "Type": "CooldownCondition", + "Id": "Golem_Crystal_Clap_Burn", + "Next": { + "Type": "Serial", + "Interactions": [ + { + "Type": "TriggerCooldown", + "Cooldown": { + "Id": "Golem_Crystal_Clap_Burn", + "Cooldown": 8 + } + }, + { + "Type": "Simple", + "RunTime": 0.1, + "Effects": { + "Particles": [ + { + "SystemId": "Impact_Fire", + "TargetEntityPart": "Entity", + "PositionOffset": { + "X": 0, + "Y": 0.75, + "Z": 1.5 + }, + "RotationOffset": { + "Pitch": -30, + "Roll": 0, + "Yaw": 90 + } + } + ] + } + }, + { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + }, + "Next": { + "Type": "ClearEntityEffect", + "Entity": "Target", + "EntityEffectId": "Golem_Wild_Clap_Burn", + "Next": { + "Type": "ApplyEffect", + "Entity": "Target", + "EffectId": "Golem_Wild_Clap_Burn" + } + } + } + ] + }, + "Failed": { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + } + } + } + ] + } + } + }, + "Parameters": { + "NameTranslationKey": { + "Value": "server.npcRoles.Golem_Wild_Crystal_Flame.name", + "Description": "Translation key for NPC name display" + } + } +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Frost.json b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Frost.json new file mode 100644 index 0000000..4030931 --- /dev/null +++ b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Frost.json @@ -0,0 +1,265 @@ +{ + "Type": "Variant", + "Reference": "Template_Intelligent", + "Modify": { + "MaxHealth": 224, + "ViewSector": 150, + "DropList": "Drop_Golem_Wild_Crystal_Frost", + "Appearance": "Golem_Crystal_Frost", + "Weapons": [], + "OffHand": [], + "MaxSpeed": 5, + "ViewRange": 30, + "AbsoluteDetectionRange": 10, + "AttitudeGroup": "WildGolem", + "DisableDamageGroups": [ + "Self", + "Void", + "WildGolem" + ], + "Attack": "Root_NPC_Golem_Wild_Crystal_Attack", + "AttackDistance": 2.5, + "TargetRange": 2.5, + "BlockProbability": 0, + "DesiredAttackDistanceRange": [ + 2, + 2.4 + ], + "CombatAttackPostDelay": [ + 0.2, + 0.2 + ], + "CombatAttackPreDelay": [ + 0.2, + 0.2 + ], + "CombatStrafeWeight": 0, + "CombatBackOffAfterAttack": false, + "CombatRelativeTurnSpeed": 0.25, + "LeashDistance": 30, + "HardLeashDistance": 40, + + "IsMemory": true, + "MemoriesCategory": "Elemental", + "MemoriesNameOverride": "Golem_Crystal_Frost", + "NameTranslationKey": { + "Compute": "NameTranslationKey" + }, + "_InteractionVars": { + "Swing_Left_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Left_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Swing_Right_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Right_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": -5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Ground_Slam_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Ground_Slam_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -1.5, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 25 + } + } + } + ] + }, + "Stomp_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Stomp_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Heavy_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Heavy_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Clap_Damage": { + "Interactions": [ + { + "Type": "CooldownCondition", + "Id": "Golem_Crystal_Clap_Freeze", + "Next": { + "Type": "Serial", + "Interactions": [ + { + "Type": "TriggerCooldown", + "Cooldown": { + "Id": "Golem_Crystal_Clap_Freeze", + "Cooldown": 8 + } + }, + { + "Type": "Simple", + "RunTime": 0.1, + "Effects": { + "Particles": [ + { + "SystemId": "Impact_Ice_Cloud", + "TargetEntityPart": "Entity", + "PositionOffset": { + "X": 0, + "Y": 0.75, + "Z": 1.5 + }, + "RotationOffset": { + "Pitch": -30, + "Roll": 0, + "Yaw": 90 + } + } + ] + } + }, + { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + }, + "Next": { + "Type": "ClearEntityEffect", + "Entity": "Target", + "EntityEffectId": "Golem_Wild_Clap_Freeze", + "Next": { + "Type": "ApplyEffect", + "Entity": "Target", + "EffectId": "Golem_Wild_Clap_Freeze" + } + } + } + ] + }, + "Failed": { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + } + } + } + ] + } + } + }, + "Parameters": { + "NameTranslationKey": { + "Value": "server.npcRoles.Golem_Wild_Crystal_Frost.name", + "Description": "Translation key for NPC name display" + } + } +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Heart.json b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Heart.json new file mode 100644 index 0000000..53d3e5c --- /dev/null +++ b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Heart.json @@ -0,0 +1,265 @@ +{ + "Type": "Variant", + "Reference": "Template_Intelligent", + "Modify": { + "MaxHealth": 193, + "ViewSector": 150, + "DropList": "Drop_Golem_Wild_Crystal_Heart", + "Appearance": "Golem_Crystal_Heart", + "Weapons": [], + "OffHand": [], + "MaxSpeed": 5, + "ViewRange": 30, + "AbsoluteDetectionRange": 10, + "AttitudeGroup": "WildGolem", + "DisableDamageGroups": [ + "Self", + "Void", + "WildGolem" + ], + "Attack": "Root_NPC_Golem_Wild_Crystal_Heart_Attack", + "AttackDistance": 2.5, + "TargetRange": 2.5, + "BlockProbability": 0, + "DesiredAttackDistanceRange": [ + 2, + 2.4 + ], + "CombatAttackPostDelay": [ + 0.2, + 0.2 + ], + "CombatAttackPreDelay": [ + 0.2, + 0.2 + ], + "CombatStrafeWeight": 0, + "CombatBackOffAfterAttack": false, + "CombatRelativeTurnSpeed": 0.25, + "LeashDistance": 30, + "HardLeashDistance": 40, + + "IsMemory": true, + "MemoriesCategory": "Elemental", + "MemoriesNameOverride": "Golem_Crystal_Sand", + "NameTranslationKey": { + "Compute": "NameTranslationKey" + }, + "_InteractionVars": { + "Swing_Left_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Left_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Swing_Right_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Right_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": -5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Ground_Slam_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Ground_Slam_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -1.5, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 25 + } + } + } + ] + }, + "Stomp_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Stomp_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Heavy_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Heavy_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Clap_Damage": { + "Interactions": [ + { + "Type": "CooldownCondition", + "Id": "Golem_Crystal_Clap_Enamored", + "Next": { + "Type": "Serial", + "Interactions": [ + { + "Type": "TriggerCooldown", + "Cooldown": { + "Id": "Golem_Crystal_Clap_Enamored", + "Cooldown": 8 + } + }, + { + "Type": "Simple", + "RunTime": 0.1, + "Effects": { + "Particles": [ + { + "SystemId": "Impact_Ice_Cloud", + "TargetEntityPart": "Entity", + "PositionOffset": { + "X": 0, + "Y": 0.75, + "Z": 1.5 + }, + "RotationOffset": { + "Pitch": -30, + "Roll": 0, + "Yaw": 90 + } + } + ] + } + }, + { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + }, + "Next": { + "Type": "ClearEntityEffect", + "Entity": "Target", + "EntityEffectId": "Golem_Wild_Clap_Enamored", + "Next": { + "Type": "ApplyEffect", + "Entity": "Target", + "EffectId": "Golem_Wild_Clap_Enamored" + } + } + } + ] + }, + "Failed": { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + } + } + } + ] + } + } + }, + "Parameters": { + "NameTranslationKey": { + "Value": "server.npcRoles.Golem_Wild_Crystal_Heart.name", + "Description": "Translation key for NPC name display" + } + } +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Sand.json b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Sand.json new file mode 100644 index 0000000..c0f7199 --- /dev/null +++ b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Sand.json @@ -0,0 +1,265 @@ +{ + "Type": "Variant", + "Reference": "Template_Intelligent", + "Modify": { + "MaxHealth": 193, + "ViewSector": 150, + "DropList": "Drop_Golem_Wild_Crystal_Sand", + "Appearance": "Golem_Crystal_Sand", + "Weapons": [], + "OffHand": [], + "MaxSpeed": 5, + "ViewRange": 30, + "AbsoluteDetectionRange": 10, + "AttitudeGroup": "WildGolem", + "DisableDamageGroups": [ + "Self", + "Void", + "WildGolem" + ], + "Attack": "Root_NPC_Golem_Wild_Crystal_Attack", + "AttackDistance": 2.5, + "TargetRange": 2.5, + "BlockProbability": 0, + "DesiredAttackDistanceRange": [ + 2, + 2.4 + ], + "CombatAttackPostDelay": [ + 0.2, + 0.2 + ], + "CombatAttackPreDelay": [ + 0.2, + 0.2 + ], + "CombatStrafeWeight": 0, + "CombatBackOffAfterAttack": false, + "CombatRelativeTurnSpeed": 0.25, + "LeashDistance": 30, + "HardLeashDistance": 40, + + "IsMemory": true, + "MemoriesCategory": "Elemental", + "MemoriesNameOverride": "Golem_Crystal_Sand", + "NameTranslationKey": { + "Compute": "NameTranslationKey" + }, + "_InteractionVars": { + "Swing_Left_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Left_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Swing_Right_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Right_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": -5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Ground_Slam_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Ground_Slam_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -1.5, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 25 + } + } + } + ] + }, + "Stomp_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Stomp_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Heavy_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Heavy_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Clap_Damage": { + "Interactions": [ + { + "Type": "CooldownCondition", + "Id": "Golem_Crystal_Clap_Blind", + "Next": { + "Type": "Serial", + "Interactions": [ + { + "Type": "TriggerCooldown", + "Cooldown": { + "Id": "Golem_Crystal_Clap_Blind", + "Cooldown": 8 + } + }, + { + "Type": "Simple", + "RunTime": 0.1, + "Effects": { + "Particles": [ + { + "SystemId": "Impact_Ice_Cloud", + "TargetEntityPart": "Entity", + "PositionOffset": { + "X": 0, + "Y": 0.75, + "Z": 1.5 + }, + "RotationOffset": { + "Pitch": -30, + "Roll": 0, + "Yaw": 90 + } + } + ] + } + }, + { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + }, + "Next": { + "Type": "ClearEntityEffect", + "Entity": "Target", + "EntityEffectId": "Golem_Wild_Clap_Blind", + "Next": { + "Type": "ApplyEffect", + "Entity": "Target", + "EffectId": "Golem_Wild_Clap_Blind" + } + } + } + ] + }, + "Failed": { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + } + } + } + ] + } + } + }, + "Parameters": { + "NameTranslationKey": { + "Value": "server.npcRoles.Golem_Wild_Crystal_Sand.name", + "Description": "Translation key for NPC name display" + } + } +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Snow.json b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Snow.json new file mode 100644 index 0000000..d2454ad --- /dev/null +++ b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Snow.json @@ -0,0 +1,265 @@ +{ + "Type": "Variant", + "Reference": "Template_Intelligent", + "Modify": { + "MaxHealth": 224, + "ViewSector": 150, + "DropList": "Drop_Golem_Wild_Crystal_Snow", + "Appearance": "Golem_Crystal_Snow", + "Weapons": [], + "OffHand": [], + "MaxSpeed": 5, + "ViewRange": 30, + "AbsoluteDetectionRange": 10, + "AttitudeGroup": "WildGolem", + "DisableDamageGroups": [ + "Self", + "Void", + "WildGolem" + ], + "Attack": "Root_NPC_Golem_Wild_Crystal_Attack", + "AttackDistance": 2.5, + "TargetRange": 2.5, + "BlockProbability": 0, + "DesiredAttackDistanceRange": [ + 2, + 2.4 + ], + "CombatAttackPostDelay": [ + 0.2, + 0.2 + ], + "CombatAttackPreDelay": [ + 0.2, + 0.2 + ], + "CombatStrafeWeight": 0, + "CombatBackOffAfterAttack": false, + "CombatRelativeTurnSpeed": 0.25, + "LeashDistance": 30, + "HardLeashDistance": 40, + + "IsMemory": true, + "MemoriesCategory": "Elemental", + "MemoriesNameOverride": "Golem_Crystal_Frost", + "NameTranslationKey": { + "Compute": "NameTranslationKey" + }, + "_InteractionVars": { + "Swing_Left_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Left_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Swing_Right_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Right_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": -5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Ground_Slam_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Ground_Slam_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -1.5, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 25 + } + } + } + ] + }, + "Stomp_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Stomp_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Heavy_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Heavy_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Clap_Damage": { + "Interactions": [ + { + "Type": "CooldownCondition", + "Id": "Golem_Crystal_Clap_Frostbite", + "Next": { + "Type": "Serial", + "Interactions": [ + { + "Type": "TriggerCooldown", + "Cooldown": { + "Id": "Golem_Crystal_Clap_Frostbite", + "Cooldown": 8 + } + }, + { + "Type": "Simple", + "RunTime": 0.1, + "Effects": { + "Particles": [ + { + "SystemId": "Impact_Ice_Cloud", + "TargetEntityPart": "Entity", + "PositionOffset": { + "X": 0, + "Y": 0.75, + "Z": 1.5 + }, + "RotationOffset": { + "Pitch": -30, + "Roll": 0, + "Yaw": 90 + } + } + ] + } + }, + { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + }, + "Next": { + "Type": "ClearEntityEffect", + "Entity": "Target", + "EntityEffectId": "Golem_Wild_Clap_Frostbite", + "Next": { + "Type": "ApplyEffect", + "Entity": "Target", + "EffectId": "Golem_Wild_Clap_Frostbite" + } + } + } + ] + }, + "Failed": { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + } + } + } + ] + } + } + }, + "Parameters": { + "NameTranslationKey": { + "Value": "server.npcRoles.Golem_Wild_Crystal_Snow.name", + "Description": "Translation key for NPC name display" + } + } +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Thunder.json b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Thunder.json new file mode 100644 index 0000000..c92fdee --- /dev/null +++ b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Thunder.json @@ -0,0 +1,281 @@ +{ + "Type": "Variant", + "Reference": "Template_Intelligent", + "Modify": { + "MaxHealth": 193, + "ViewSector": 150, + "DropList": "Drop_Golem_Wild_Crystal_Thunder", + "Appearance": "Golem_Crystal_Thunder", + "Weapons": [], + "OffHand": [], + "MaxSpeed": 5, + "ViewRange": 30, + "AbsoluteDetectionRange": 10, + "AttitudeGroup": "WildGolem", + "DisableDamageGroups": [ + "Self", + "Void", + "WildGolem" + ], + "Attack": "Root_NPC_Golem_Wild_Crystal_Attack", + "AttackDistance": 2.5, + "TargetRange": 2.5, + "BlockProbability": 0, + "DesiredAttackDistanceRange": [ + 2, + 2.4 + ], + "CombatAttackPostDelay": [ + 0.2, + 0.2 + ], + "CombatAttackPreDelay": [ + 0.2, + 0.2 + ], + "CombatStrafeWeight": 0, + "CombatBackOffAfterAttack": false, + "CombatRelativeTurnSpeed": 0.25, + "LeashDistance": 30, + "HardLeashDistance": 40, + + "IsMemory": true, + "MemoriesCategory": "Elemental", + "MemoriesNameOverride": "Golem_Crystal_Thunder", + "NameTranslationKey": { + "Compute": "NameTranslationKey" + }, + "_InteractionVars": { + "Swing_Left_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Left_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Swing_Right_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Right_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": -5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Damage": { + "Interactions": [ + { + "Type": "Simple", + "Next": { + "Type": "LaunchProjectile", + "RunTime": 0, + "ProjectileId": "Golem_Wild_Wind_Vortex", + "Next": { + "Parent": "Golem_Crystal_Spin_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + } + } + ] + }, + "Ground_Slam_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Ground_Slam_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -1.5, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 25 + } + } + } + ] + }, + "Stomp_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Stomp_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Heavy_Damage": { + "Interactions": [ + { + "Type": "Simple", + "Next": { + "Type": "LaunchProjectile", + "RunTime": 0, + "ProjectileId": "Golem_Wild_Wind_Vortex", + "Next": { + "Parent": "Golem_Crystal_Spin_Heavy_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 15 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + } + } + ] + }, + "Clap_Damage": { + "Interactions": [ + { + "Type": "CooldownCondition", + "Id": "Golem_Crystal_Clap_Slow", + "Next": { + "Type": "Serial", + "Interactions": [ + { + "Type": "TriggerCooldown", + "Cooldown": { + "Id": "Golem_Crystal_Clap_Slow", + "Cooldown": 8 + } + }, + { + "Type": "Simple", + "RunTime": 0.1, + "Effects": { + "Particles": [ + { + "SystemId": "Impact_Critical_Sparks", + "TargetEntityPart": "Entity", + "PositionOffset": { + "X": 0, + "Y": 0.75, + "Z": 1.5 + }, + "RotationOffset": { + "Pitch": -30, + "Roll": 0, + "Yaw": 90 + } + } + ] + } + }, + { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + }, + "Next": { + "Type": "ClearEntityEffect", + "Entity": "Target", + "EntityEffectId": "Golem_Wild_Clap_Slow", + "Next": { + "Type": "ApplyEffect", + "Entity": "Target", + "EffectId": "Golem_Wild_Clap_Slow" + } + } + } + ] + }, + "Failed": { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + } + } + } + ] + } + } + }, + "Parameters": { + "NameTranslationKey": { + "Value": "server.npcRoles.Golem_Wild_Crystal_Thunder.name", + "Description": "Translation key for NPC name display" + } + } +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Void.json b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Void.json new file mode 100644 index 0000000..8f6c800 --- /dev/null +++ b/src/main/resources/Server/NPC/Roles/Elemental/Golem/Golem_Wild_Crystal_Void.json @@ -0,0 +1,265 @@ +{ + "Type": "Variant", + "Reference": "Template_Intelligent", + "Modify": { + "MaxHealth": 224, + "ViewSector": 150, + "DropList": "Drop_Golem_Wild_Crystal_Void", + "Appearance": "Golem_Crystal_Void", + "Weapons": ["Weapon_Battleaxe_Scythe_Void"], + "OffHand": [], + "MaxSpeed": 7, + "ViewRange": 30, + "AbsoluteDetectionRange": 10, + "AttitudeGroup": "Void", + "DisableDamageGroups": [ + "Self", + "Void", + "WildGolem" + ], + "Attack": "Root_NPC_Golem_Wild_Crystal_Void_Attack", + "AttackDistance": 2.5, + "TargetRange": 2.5, + "BlockProbability": 0, + "DesiredAttackDistanceRange": [ + 2, + 2.4 + ], + "CombatAttackPostDelay": [ + 0.2, + 0.2 + ], + "CombatAttackPreDelay": [ + 0.2, + 0.2 + ], + "CombatStrafeWeight": 0, + "CombatBackOffAfterAttack": false, + "CombatRelativeTurnSpeed": 0.25, + "LeashDistance": 30, + "HardLeashDistance": 40, + "WakingPeriod": [0.0, 24.0], + "IsMemory": true, + "MemoriesCategory": "Elemental", + "MemoriesNameOverride": "Golem_Guardian_Void", + "NameTranslationKey": { + "Compute": "NameTranslationKey" + }, + "_InteractionVars": { + "Swing_Left_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Left_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Swing_Right_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Swing_Right_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": -5, + "RelativeZ": 2, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Ground_Slam_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Ground_Slam_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -1.5, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 25 + } + } + } + ] + }, + "Stomp_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Stomp_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -2, + "RelativeX": 0, + "RelativeZ": 5, + "VelocityY": 5 + } + } + } + ] + }, + "Spin_Heavy_Damage": { + "Interactions": [ + { + "Parent": "Golem_Crystal_Spin_Heavy_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 20 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": -10 + } + } + } + ] + }, + "Clap_Damage": { + "Interactions": [ + { + "Type": "CooldownCondition", + "Id": "Golem_Crystal_Clap_Drain", + "Next": { + "Type": "Serial", + "Interactions": [ + { + "Type": "TriggerCooldown", + "Cooldown": { + "Id": "Golem_Crystal_Clap_Drain", + "Cooldown": 8 + } + }, + { + "Type": "Simple", + "RunTime": 0.1, + "Effects": { + "Particles": [ + { + "SystemId": "VoidImpact", + "TargetEntityPart": "Entity", + "PositionOffset": { + "X": 0, + "Y": 0.75, + "Z": 1.5 + }, + "RotationOffset": { + "Pitch": -30, + "Roll": 0, + "Yaw": 90 + } + } + ] + } + }, + { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + }, + "Next": { + "Type": "ClearEntityEffect", + "Entity": "Target", + "EntityEffectId": "Golem_Wild_Clap_Drain", + "Next": { + "Type": "ApplyEffect", + "Entity": "Target", + "EffectId": "Golem_Wild_Clap_Drain" + } + } + } + ] + }, + "Failed": { + "Parent": "Golem_Crystal_Clap_Damage", + "DamageCalculator": { + "Type": "Absolute", + "BaseDamage": { + "Physical": 29 + }, + "RandomPercentageModifier": 0.1 + }, + "DamageEffects": { + "Knockback": { + "Force": 0.5 + } + } + } + } + ] + } + } + }, + "Parameters": { + "NameTranslationKey": { + "Value": "server.npcRoles.Golem_Wild_Crystal_Void.name", + "Description": "Translation key for NPC name display" + } + } +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/Beacons/Zone1/Zone1_Mineshafts_Wild_Golems.json b/src/main/resources/Server/NPC/Spawn/Beacons/Zone1/Zone1_Mineshafts_Wild_Golems.json new file mode 100644 index 0000000..788afbd --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/Beacons/Zone1/Zone1_Mineshafts_Wild_Golems.json @@ -0,0 +1,18 @@ +{ + "Environments": [ + "Env_Zone1_Mineshafts" + ], + "MinDistanceFromPlayer": 25, + "MaxSpawnedNPCs": 1, + "ConcurrentSpawnsRange": [ 1, 1 ], + "SpawnAfterGameTimeRange": [ "PT20M", "PT60M" ], + "NPCIdleDespawnTime": 60, + "BeaconVacantDespawnGameTime": "PT15M", + "BeaconRadius": 100, + "SpawnRadius": 50, + "TargetDistanceFromPlayer": 25, + "NPCs": [ + { "Weight": 30, "Id": "Golem_Wild_Crystal_Flame" } + ], + "LightRanges": { "Light": [ 0, 7 ]} +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/Beacons/Zone1/Zone1_Mountains_Wild_Golems.json b/src/main/resources/Server/NPC/Spawn/Beacons/Zone1/Zone1_Mountains_Wild_Golems.json new file mode 100644 index 0000000..27ab21b --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/Beacons/Zone1/Zone1_Mountains_Wild_Golems.json @@ -0,0 +1,18 @@ +{ + "Environments": [ + "Env_Zone1_Mountains" + ], + "MinDistanceFromPlayer": 25, + "MaxSpawnedNPCs": 1, + "ConcurrentSpawnsRange": [ 1, 1 ], + "SpawnAfterGameTimeRange": [ "PT20M", "PT60M" ], + "NPCIdleDespawnTime": 60, + "BeaconVacantDespawnGameTime": "PT15M", + "BeaconRadius": 100, + "SpawnRadius": 50, + "TargetDistanceFromPlayer": 25, + "NPCs": [ + { "Weight": 30, "Id": "Golem_Wild_Crystal_Thunder" } + ], + "LightRanges": { "Light": [ 0, 7 ]} +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/Beacons/Zone1/Zone1_Surface_WildGolems.json b/src/main/resources/Server/NPC/Spawn/Beacons/Zone1/Zone1_Surface_WildGolems.json new file mode 100644 index 0000000..6b5abb7 --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/Beacons/Zone1/Zone1_Surface_WildGolems.json @@ -0,0 +1,19 @@ +{ + "Environments": [ + "Env_Zone1_Swamps", + "Env_Zone1_Autumn" + ], + "MinDistanceFromPlayer": 25, + "MaxSpawnedNPCs": 1, + "ConcurrentSpawnsRange": [ 1, 1 ], + "SpawnAfterGameTimeRange": [ "PT20M", "PT60M" ], + "NPCIdleDespawnTime": 60, + "BeaconVacantDespawnGameTime": "PT15M", + "BeaconRadius": 100, + "SpawnRadius": 50, + "TargetDistanceFromPlayer": 25, + "NPCs": [ + { "Weight": 30, "Id": "Golem_Wild_Crystal_Earth" } + ], + "LightRanges": { "Light": [ 0, 7 ]} +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/Beacons/Zone2/Zone2_Deserts_Wild_Golems.json b/src/main/resources/Server/NPC/Spawn/Beacons/Zone2/Zone2_Deserts_Wild_Golems.json new file mode 100644 index 0000000..53899e5 --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/Beacons/Zone2/Zone2_Deserts_Wild_Golems.json @@ -0,0 +1,18 @@ +{ + "Environments": [ + "Env_Zone2_Deserts" + ], + "MinDistanceFromPlayer": 25, + "MaxSpawnedNPCs": 1, + "ConcurrentSpawnsRange": [ 1, 1 ], + "SpawnAfterGameTimeRange": [ "PT20M", "PT60M" ], + "NPCIdleDespawnTime": 60, + "BeaconVacantDespawnGameTime": "PT15M", + "BeaconRadius": 100, + "SpawnRadius": 50, + "TargetDistanceFromPlayer": 25, + "NPCs": [ + { "Weight": 30, "Id": "Golem_Wild_Crystal_Sand" } + ], + "LightRanges": { "Light": [ 0, 7 ]} +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/Beacons/Zone2/Zone2_Mineshafts_Wild_Golems.json b/src/main/resources/Server/NPC/Spawn/Beacons/Zone2/Zone2_Mineshafts_Wild_Golems.json new file mode 100644 index 0000000..284105a --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/Beacons/Zone2/Zone2_Mineshafts_Wild_Golems.json @@ -0,0 +1,18 @@ +{ + "Environments": [ + "Env_Zone2_Mineshafts" + ], + "MinDistanceFromPlayer": 25, + "MaxSpawnedNPCs": 1, + "ConcurrentSpawnsRange": [ 1, 1 ], + "SpawnAfterGameTimeRange": [ "PT20M", "PT60M" ], + "NPCIdleDespawnTime": 60, + "BeaconVacantDespawnGameTime": "PT15M", + "BeaconRadius": 100, + "SpawnRadius": 50, + "TargetDistanceFromPlayer": 25, + "NPCs": [ + { "Weight": 30, "Id": "Golem_Wild_Crystal_Flame" } + ], + "LightRanges": { "Light": [ 0, 7 ]} +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/Beacons/Zone2/Zone2_Oasis_Wild_Golems.json b/src/main/resources/Server/NPC/Spawn/Beacons/Zone2/Zone2_Oasis_Wild_Golems.json new file mode 100644 index 0000000..35d3891 --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/Beacons/Zone2/Zone2_Oasis_Wild_Golems.json @@ -0,0 +1,18 @@ +{ + "Environments": [ + "Env_Zone2_Oasis" + ], + "MinDistanceFromPlayer": 25, + "MaxSpawnedNPCs": 1, + "ConcurrentSpawnsRange": [ 1, 1 ], + "SpawnAfterGameTimeRange": [ "PT20M", "PT60M" ], + "NPCIdleDespawnTime": 60, + "BeaconVacantDespawnGameTime": "PT15M", + "BeaconRadius": 100, + "SpawnRadius": 50, + "TargetDistanceFromPlayer": 25, + "NPCs": [ + { "Weight": 30, "Id": "Golem_Wild_Crystal_Heart" } + ], + "LightRanges": { "Light": [ 0, 7 ]} +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/Beacons/Zone2/Zone2_Plateaus_Wild_Golems.json b/src/main/resources/Server/NPC/Spawn/Beacons/Zone2/Zone2_Plateaus_Wild_Golems.json new file mode 100644 index 0000000..f00d0cb --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/Beacons/Zone2/Zone2_Plateaus_Wild_Golems.json @@ -0,0 +1,18 @@ +{ + "Environments": [ + "Env_Zone2_Plateaus" + ], + "MinDistanceFromPlayer": 25, + "MaxSpawnedNPCs": 1, + "ConcurrentSpawnsRange": [ 1, 1 ], + "SpawnAfterGameTimeRange": [ "PT20M", "PT60M" ], + "NPCIdleDespawnTime": 60, + "BeaconVacantDespawnGameTime": "PT15M", + "BeaconRadius": 100, + "SpawnRadius": 50, + "TargetDistanceFromPlayer": 25, + "NPCs": [ + { "Weight": 30, "Id": "Golem_Wild_Crystal_Thunder" } + ], + "LightRanges": { "Light": [ 0, 7 ]} +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/Beacons/Zone3/Zone3_Glacial_Wild_Golems.json b/src/main/resources/Server/NPC/Spawn/Beacons/Zone3/Zone3_Glacial_Wild_Golems.json new file mode 100644 index 0000000..6a08bc3 --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/Beacons/Zone3/Zone3_Glacial_Wild_Golems.json @@ -0,0 +1,18 @@ +{ + "Environments": [ + "Env_Zone3_Glacial" + ], + "MinDistanceFromPlayer": 25, + "MaxSpawnedNPCs": 1, + "ConcurrentSpawnsRange": [ 1, 1 ], + "SpawnAfterGameTimeRange": [ "PT20M", "PT60M" ], + "NPCIdleDespawnTime": 60, + "BeaconVacantDespawnGameTime": "PT15M", + "BeaconRadius": 100, + "SpawnRadius": 50, + "TargetDistanceFromPlayer": 25, + "NPCs": [ + { "Weight": 30, "Id": "Golem_Wild_Crystal_Snow" } + ], + "LightRanges": { "Light": [ 0, 7 ]} +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/Beacons/Zone3/Zone3_Mineshafts_Wild_Golems.json b/src/main/resources/Server/NPC/Spawn/Beacons/Zone3/Zone3_Mineshafts_Wild_Golems.json new file mode 100644 index 0000000..c1caa56 --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/Beacons/Zone3/Zone3_Mineshafts_Wild_Golems.json @@ -0,0 +1,18 @@ +{ + "Environments": [ + "Env_Zone3_Mineshafts" + ], + "MinDistanceFromPlayer": 25, + "MaxSpawnedNPCs": 1, + "ConcurrentSpawnsRange": [ 1, 1 ], + "SpawnAfterGameTimeRange": [ "PT20M", "PT60M" ], + "NPCIdleDespawnTime": 60, + "BeaconVacantDespawnGameTime": "PT15M", + "BeaconRadius": 100, + "SpawnRadius": 50, + "TargetDistanceFromPlayer": 25, + "NPCs": [ + { "Weight": 30, "Id": "Golem_Wild_Crystal_Flame" } + ], + "LightRanges": { "Light": [ 0, 7 ]} +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/Beacons/Zone3/Zone3_Mountains_Wild_Golems.json b/src/main/resources/Server/NPC/Spawn/Beacons/Zone3/Zone3_Mountains_Wild_Golems.json new file mode 100644 index 0000000..5ef2393 --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/Beacons/Zone3/Zone3_Mountains_Wild_Golems.json @@ -0,0 +1,18 @@ +{ + "Environments": [ + "Env_Zone3_Mountains" + ], + "MinDistanceFromPlayer": 25, + "MaxSpawnedNPCs": 1, + "ConcurrentSpawnsRange": [ 1, 1 ], + "SpawnAfterGameTimeRange": [ "PT20M", "PT60M" ], + "NPCIdleDespawnTime": 60, + "BeaconVacantDespawnGameTime": "PT15M", + "BeaconRadius": 100, + "SpawnRadius": 50, + "TargetDistanceFromPlayer": 25, + "NPCs": [ + { "Weight": 30, "Id": "Golem_Wild_Crystal_Frost" } + ], + "LightRanges": { "Light": [ 0, 7 ]} +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/Beacons/Zone4/Zone4_Jungles_WildGolems.json b/src/main/resources/Server/NPC/Spawn/Beacons/Zone4/Zone4_Jungles_WildGolems.json new file mode 100644 index 0000000..8dfca89 --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/Beacons/Zone4/Zone4_Jungles_WildGolems.json @@ -0,0 +1,21 @@ +{ + "Environments": [ + "Env_Zone4_Jungles" + ], + "MinDistanceFromPlayer": 25, + "MaxSpawnedNPCs": 1, + "ConcurrentSpawnsRange": [ 1, 4 ], + "SpawnAfterGameTimeRange": [ "PT20M", "PT60M" ], + "NPCIdleDespawnTime": 60, + "BeaconVacantDespawnGameTime": "PT15M", + "BeaconRadius": 100, + "SpawnRadius": 50, + "TargetDistanceFromPlayer": 25, + "NPCs": [ + { "Weight": 10, "Id": "Golem_Wild_Crystal_Flame" }, + { "Weight": 10, "Id": "Golem_Wild_Crystal_Thunder" }, + { "Weight": 10, "Id": "Golem_Wild_Crystal_Frost" }, + { "Weight": 5, "Id": "Golem_Wild_Crystal_Heart" } + ], + "LightRanges": { "Light": [ 0, 8 ]} +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/Beacons/Zone4/Zone4_Surface_WildGolems.json b/src/main/resources/Server/NPC/Spawn/Beacons/Zone4/Zone4_Surface_WildGolems.json new file mode 100644 index 0000000..c490beb --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/Beacons/Zone4/Zone4_Surface_WildGolems.json @@ -0,0 +1,20 @@ +{ + "Environments": [ + "Env_Zone4_Forests", + "Env_Zone4_Volcanoes", + "Env_Zone4_Crucible" + ], + "MinDistanceFromPlayer": 25, + "MaxSpawnedNPCs": 1, + "ConcurrentSpawnsRange": [ 1, 4 ], + "SpawnAfterGameTimeRange": [ "PT20M", "PT60M" ], + "NPCIdleDespawnTime": 60, + "BeaconVacantDespawnGameTime": "PT15M", + "BeaconRadius": 100, + "SpawnRadius": 50, + "TargetDistanceFromPlayer": 25, + "NPCs": [ + { "Weight": 10, "Id": "Golem_Wild_Crystal_Flame" } + ], + "LightRanges": { "Light": [ 0, 7 ]} +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/World/Spawns_Void_Night_Wild_Golems.json b/src/main/resources/Server/NPC/Spawn/World/Spawns_Void_Night_Wild_Golems.json new file mode 100644 index 0000000..8b61773 --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/World/Spawns_Void_Night_Wild_Golems.json @@ -0,0 +1,38 @@ +{ + "Environments": [ + "Env_Zone1_Azure", + "Env_Zone2_Savanna", + "Env_Zone3_Glacial", + "Env_Zone4_Wastes" + ], + "Despawn": { + "DayTimeRange": [ + 5, + 19 + ] + }, + "MoonPhaseWeightModifiers": [ + 0, + 1, + 1, + 1.5, + 2 + ], + "NPCs": [ + { + "Weight": 10, + "SpawnBlockSet": "StoneAndSoil", + "Id": "Golem_Wild_Crystal_Void" + } + ], + "DayTimeRange": [ + 19, + 5 + ], + "LightRanges": { + "Light": [ + 0, + 8 + ] + } +} diff --git a/src/main/resources/Server/NPC/Spawn/World/Spawns_Zone4_Jungles_Wild_Golems.json b/src/main/resources/Server/NPC/Spawn/World/Spawns_Zone4_Jungles_Wild_Golems.json new file mode 100644 index 0000000..d336bb3 --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/World/Spawns_Zone4_Jungles_Wild_Golems.json @@ -0,0 +1,27 @@ +{ + "Environments": [ + "Env_Zone4_Jungles" + ], + "NPCs": [ + { + "Weight": 15, + "SpawnBlockSet": "StoneAndSoil", + "Id": "Golem_Wild_Crystal_Frost" + }, + { + "Weight": 15, + "SpawnBlockSet": "StoneAndSoil", + "Id": "Golem_Wild_Crystal_Thunder" + }, + { + "Weight": 15, + "SpawnBlockSet": "StoneAndSoil", + "Id": "Golem_Wild_Crystal_Flame" + }, + { + "Weight": 5, + "SpawnBlockSet": "StoneAndSoil", + "Id": "Golem_Wild_Crystal_Heart" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/Server/NPC/Spawn/World/Spawns_Zone4_Surface_Wild_Golems.json b/src/main/resources/Server/NPC/Spawn/World/Spawns_Zone4_Surface_Wild_Golems.json new file mode 100644 index 0000000..d0ab9a8 --- /dev/null +++ b/src/main/resources/Server/NPC/Spawn/World/Spawns_Zone4_Surface_Wild_Golems.json @@ -0,0 +1,10 @@ +{ + "Environments": [ + "Env_Zone4_Forests", + "Env_Zone4_Volcanoes", + "Env_Zone4_Crucible" + ], + "NPCs": [ + { "Weight": 10, "Id": "Golem_Wild_Crystal_Flame" } + ] +} \ No newline at end of file diff --git a/src/main/resources/Server/Projectiles/NPCs/Elemental/Golem/Golem_Wild_Wind_Vortex.json b/src/main/resources/Server/Projectiles/NPCs/Elemental/Golem/Golem_Wild_Wind_Vortex.json new file mode 100644 index 0000000..8883e76 --- /dev/null +++ b/src/main/resources/Server/Projectiles/NPCs/Elemental/Golem/Golem_Wild_Wind_Vortex.json @@ -0,0 +1,19 @@ +{ + "Appearance": "Golem_Wild_Wind_Vortex", + "DepthShot": 2, + "PitchAdjustShot": true, + "SticksVertically": false, + "MuzzleVelocity": 1, + "TerminalVelocity": 10, + "Gravity": 1, + "Damage": 10, + "DeathEffectsOnHit": false, + "TimeToLive": 15, + "DeadTimeMiss": 10, + "ImpactSlowdown": 1, + "ComputeYaw": false, + "ComputePitch": false, + "ComputeRoll": false, + "Bounciness": 0.5, + "DeadTime": 5 +} diff --git a/src/main/resources/manifest.json b/src/main/resources/manifest.json new file mode 100644 index 0000000..cb793f2 --- /dev/null +++ b/src/main/resources/manifest.json @@ -0,0 +1,21 @@ +{ + "Group": "QuickBASIC", + "Name": "QuickBASIC.MoreGolems", + "Version": "0.9.3-prerelease", + "Description": "Adds more golems and golem variants to world for renewable sources of crystal shards.", + "Authors": [ + { + "Name": "QuickBASIC", + "Email": "", + "Url": "" + } + ], + "Website": "", + "ServerVersion": "2026.03.12-b1f856309", + "Dependencies": {}, + "OptionalDependencies": {}, + "LoadBefore": {}, + "DisabledByDefault": false, + "IncludesAssetPack": false, + "SubPlugins": [] +} \ No newline at end of file