diff --git a/api/v1/_meta/verduror-class-skills.json b/api/v1/_meta/verduror-class-skills.json new file mode 100644 index 00000000..0a43bb8f --- /dev/null +++ b/api/v1/_meta/verduror-class-skills.json @@ -0,0 +1,35 @@ +{ + "classId": "verduror", + "updated": "2026-09-03", + "icons": "/icons/skills/class/verduror/", + "prefabs": "/models/class-skills/", + "l0": [ + "Plant Seed", + "Vine Lash", + "Iguana" + ], + "uniqueIcons": { + "v_seed": "plant-seed.png", + "v_lash": "vine-lash.png", + "v_iguana": "iguana.png", + "v_bolt": "nature-bolt.png", + "v_vine": "vine-cast.png", + "v_bloom": "seed-bloom.png", + "v_cactus_trap": "barrel-cactus.png", + "v_tara": "green-tara.png", + "v_blink": "slip-step.png", + "v_flare": "seed-bloom.png", + "v_surge": "wild-surge.png", + "v_move_cast": "primal-cadence.png", + "v_grove": "living-grove.png", + "v_current": "primal-current.png", + "v_arcanum": "open-arcanum.png" + }, + "shared": { + "v_flare": "seed-bloom.png — Seedflare is a bloom burst; same art as Seed Bloom on purpose." + }, + "cdnStatus": "pending_upload", + "cdnNote": "Local PNGs verified (256x256 RGBA). CDN currently returns HTML instead of images. Upload to R2 required before consumers can resolve iconUrl paths.", + "uploadCommand": "npm run sync:icons && node scripts/upload-icon-registry-r2.mjs", + "note": "Canonical Verduror tree. Not mistweaver. Unique painted icons — leftover skills no longer reuse iguana/seed/bolt." +} diff --git a/api/v1/catalog.json b/api/v1/catalog.json index f991cda3..8a85805a 100644 --- a/api/v1/catalog.json +++ b/api/v1/catalog.json @@ -1,11 +1,11 @@ { "service": "objectstore", "version": "5.0.0", - "canonicalUrl": "https://info.grudge-studio.com", + "canonicalUrl": "https://objectstore.grudge-studio.com", "docs": "https://info.grudge-studio.com/docs", "browseWeaponSkills": "https://info.grudge-studio.com/WEAPON_SKILLS.html", - "staticJsonBase": "https://info.grudge-studio.com/api/v1", - "workerApiBase": "https://info.grudge-studio.com/v1", + "staticJsonBase": "https://objectstore.grudge-studio.com/api/v1", + "workerApiBase": "https://objectstore.grudge-studio.com/api/v1", "fleet": "https://grudachain.grudge-studio.com/api/fleet/connect", "auth": { "login": "https://id.grudge-studio.com/api/auth/page", diff --git a/api/v1/classes.json b/api/v1/classes.json index 98303a31..1a6e2684 100644 --- a/api/v1/classes.json +++ b/api/v1/classes.json @@ -37,7 +37,12 @@ ], "dualWield": true, "equipmentRulesRef": "class-equipment-rules.json#classes.warrior", - "animPacks": ["sword_shield", "dual_wield", "two_handed", "unarmed"], + "animPacks": [ + "sword_shield", + "dual_wield", + "two_handed", + "unarmed" + ], "abilities": [ { "id": "slash", @@ -177,7 +182,7 @@ "iconUrl": "/icons/skills/class/barbarian/barbarian_07.png", "sourcePack": "barbarian" }, - "emoji": "⚔️", + "emoji": "\u2694\ufe0f", "iconUrl": "https://assets.grudge-studio.com/icons/warlords/classes/warrior.png", "sourcePack": "barbarian" }, @@ -187,7 +192,7 @@ "icon": "/icons/warlords/classes/mage.png", "color": "#8b5cf6", "description": "Master of arcane magic and divine healing arts.", - "lore": "Drawing power from ancient ley lines and forgotten gods, Mage Priests wield destructive magic alongside sacred healing — a balance few can master.", + "lore": "Drawing power from ancient ley lines and forgotten gods, Mage Priests wield destructive magic alongside sacred healing \u2014 a balance few can master.", "startingAttributes": { "Strength": 0, "Vitality": 1, @@ -212,7 +217,10 @@ ], "dualWield": false, "equipmentRulesRef": "class-equipment-rules.json#classes.mage", - "animPacks": ["magic_spell", "unarmed"], + "animPacks": [ + "magic_spell", + "unarmed" + ], "abilities": [ { "id": "arcane_bolt", @@ -309,7 +317,7 @@ "iconUrl": "/icons/skills/class/firemage/firemage_05.png", "sourcePack": "firemage" }, - "emoji": "🔮", + "emoji": "\ud83d\udd2e", "iconUrl": "https://assets.grudge-studio.com/icons/warlords/classes/mage.png", "sourcePack": "firemage" }, @@ -319,7 +327,7 @@ "icon": "/icons/warlords/classes/worge.png", "color": "#d97706", "description": "A shapeshifter who wields nature and storm magic in human form, then transforms into a devastating beast.", - "lore": "Worges walk between worlds — scholars of storm and root in mortal guise, unstoppable predators in beast form. Their mace and dagger channel primal energies until the wild within is unleashed.", + "lore": "Worges walk between worlds \u2014 scholars of storm and root in mortal guise, unstoppable predators in beast form. Their mace and dagger channel primal energies until the wild within is unleashed.", "startingAttributes": { "Strength": 2, "Vitality": 2, @@ -344,7 +352,12 @@ ], "dualWield": false, "equipmentRulesRef": "class-equipment-rules.json#classes.worge", - "animPacks": ["sword_shield", "magic_spell", "longbow", "unarmed"], + "animPacks": [ + "sword_shield", + "magic_spell", + "longbow", + "unarmed" + ], "abilities": [ { "id": "mace_strike", @@ -553,7 +566,7 @@ "iconUrl": "/icons/skills/class/necromancer/necromancer_11.png", "sourcePack": "necromancer" }, - "emoji": "🐺", + "emoji": "\ud83d\udc3a", "iconUrl": "https://assets.grudge-studio.com/icons/warlords/classes/worge.png", "sourcePack": "necromancer" }, @@ -589,7 +602,12 @@ ], "dualWield": false, "equipmentRulesRef": "class-equipment-rules.json#classes.ranger", - "animPacks": ["longbow", "rifle", "two_handed", "unarmed"], + "animPacks": [ + "longbow", + "rifle", + "two_handed", + "unarmed" + ], "abilities": [ { "id": "quick_shot", @@ -696,7 +714,7 @@ "iconUrl": "/icons/skills/class/hunter/hunter_06.png", "sourcePack": "hunter" }, - "emoji": "🏹", + "emoji": "\ud83c\udff9", "iconUrl": "https://assets.grudge-studio.com/icons/warlords/classes/ranger.png", "sourcePack": "hunter" }, @@ -706,19 +724,54 @@ "name": "Priest", "icon": "/icons/warlords/classes/priest.jpg", "color": "#fde68a", - "description": "Discipline healer — Atonement from damage, shields, mass dispel, pain reflect.", + "description": "Discipline healer \u2014 Atonement from damage, shields, mass dispel, pain reflect.", "lore": "Priests bind an ally and turn every holy bolt into a heal. They strip hexes, plant barriers before slams, and reflect pain back as light.", - "startingAttributes": { "Strength": 0, "Vitality": 1, "Endurance": 1, "Dexterity": 0, "Agility": 0, "Intellect": 2, "Wisdom": 5, "Tactics": 1 }, - "weaponTypes": ["holyStaves", "arcaneStaves", "tomes", "orbs", "claws"], - "armorTypes": ["cloth"], + "startingAttributes": { + "Strength": 0, + "Vitality": 1, + "Endurance": 1, + "Dexterity": 0, + "Agility": 0, + "Intellect": 2, + "Wisdom": 5, + "Tactics": 1 + }, + "weaponTypes": [ + "holyStaves", + "arcaneStaves", + "tomes", + "orbs", + "claws" + ], + "armorTypes": [ + "cloth" + ], "dualWield": false, "equipmentRulesRef": "class-equipment-rules.json#classes.priest", - "animPacks": ["magic_spell", "unarmed"], + "animPacks": [ + "magic_spell", + "unarmed" + ], "abilities": [ - { "id": "smite", "name": "Smite", "description": "Holy bolt that feeds Atonement", "type": "holy", "damage": 0.9, "manaCost": 8, "cooldown": 0 }, - { "id": "word_shield", "name": "Word Shield", "description": "Absorb shield; Atonement ticks through it", "type": "holy", "manaCost": 18, "cooldown": 8 } + { + "id": "smite", + "name": "Smite", + "description": "Holy bolt that feeds Atonement", + "type": "holy", + "damage": 0.9, + "manaCost": 8, + "cooldown": 0 + }, + { + "id": "word_shield", + "name": "Word Shield", + "description": "Absorb shield; Atonement ticks through it", + "type": "holy", + "manaCost": 18, + "cooldown": 8 + } ], - "emoji": "✚", + "emoji": "\u271a", "iconUrl": "/icons/warlords/classes/priest.jpg", "sourcePack": "firemage" }, @@ -730,17 +783,51 @@ "color": "#b91c1c", "description": "Two-hand parry tank and execute DPS. Timing is the armor.", "lore": "Raiders dropped the shield. Every swing opens a parry window; a catch becomes Overpower. They offtank slams and cut healing in the arena.", - "startingAttributes": { "Strength": 5, "Vitality": 2, "Endurance": 2, "Dexterity": 2, "Agility": 1, "Intellect": 0, "Wisdom": 0, "Tactics": 0 }, - "weaponTypes": ["greatswords", "greataxes", "hammers2h", "claws"], - "armorTypes": ["plate", "mail"], + "startingAttributes": { + "Strength": 5, + "Vitality": 2, + "Endurance": 2, + "Dexterity": 2, + "Agility": 1, + "Intellect": 0, + "Wisdom": 0, + "Tactics": 0 + }, + "weaponTypes": [ + "greatswords", + "greataxes", + "hammers2h", + "claws" + ], + "armorTypes": [ + "plate", + "mail" + ], "dualWield": false, "equipmentRulesRef": "class-equipment-rules.json#classes.raider", - "animPacks": ["two_handed", "unarmed"], + "animPacks": [ + "two_handed", + "unarmed" + ], "abilities": [ - { "id": "riposte", "name": "Riposte Stance", "description": "Parry window on every 2H swing", "type": "physical", "passive": true }, - { "id": "mortal_strike", "name": "Mortal Strike", "description": "Cut incoming heals on the target", "type": "physical", "damage": 1.4, "staminaCost": 15, "cooldown": 10 } + { + "id": "riposte", + "name": "Riposte Stance", + "description": "Parry window on every 2H swing", + "type": "physical", + "passive": true + }, + { + "id": "mortal_strike", + "name": "Mortal Strike", + "description": "Cut incoming heals on the target", + "type": "physical", + "damage": 1.4, + "staminaCost": 15, + "cooldown": 10 + } ], - "emoji": "⚔", + "emoji": "\u2694", "iconUrl": "/icons/warlords/classes/raider.jpg", "sourcePack": "barbarian" }, @@ -750,19 +837,54 @@ "name": "Thief", "icon": "/icons/warlords/classes/thief.jpg", "color": "#ca8a04", - "description": "Outlaw rogue — combo, pistol interrupt, blade flurry, smoke bomb peel.", + "description": "Outlaw rogue \u2014 combo, pistol interrupt, blade flurry, smoke bomb peel.", "lore": "Thieves fight dirty and close. A pistol shot stops a cast; a smoke bomb covers the healer; Between the Eyes spends the combo.", - "startingAttributes": { "Strength": 1, "Vitality": 1, "Endurance": 1, "Dexterity": 4, "Agility": 4, "Intellect": 0, "Wisdom": 0, "Tactics": 1 }, - "weaponTypes": ["daggers", "swords", "pistols", "claws"], - "armorTypes": ["leather"], + "startingAttributes": { + "Strength": 1, + "Vitality": 1, + "Endurance": 1, + "Dexterity": 4, + "Agility": 4, + "Intellect": 0, + "Wisdom": 0, + "Tactics": 1 + }, + "weaponTypes": [ + "daggers", + "swords", + "pistols", + "claws" + ], + "armorTypes": [ + "leather" + ], "dualWield": true, "equipmentRulesRef": "class-equipment-rules.json#classes.thief", - "animPacks": ["dual_wield", "rifle", "unarmed"], + "animPacks": [ + "dual_wield", + "rifle", + "unarmed" + ], "abilities": [ - { "id": "sinister", "name": "Sinister Strike", "description": "Combo builder", "type": "physical", "damage": 0.9, "staminaCost": 4 }, - { "id": "pistol_shot", "name": "Pistol Shot", "description": "Ranged interrupt", "type": "physical", "damage": 0.7, "staminaCost": 8, "cooldown": 6 } + { + "id": "sinister", + "name": "Sinister Strike", + "description": "Combo builder", + "type": "physical", + "damage": 0.9, + "staminaCost": 4 + }, + { + "id": "pistol_shot", + "name": "Pistol Shot", + "description": "Ranged interrupt", + "type": "physical", + "damage": 0.7, + "staminaCost": 8, + "cooldown": 6 + } ], - "emoji": "🗡", + "emoji": "\ud83d\udde1", "iconUrl": "/icons/warlords/classes/thief.jpg", "sourcePack": "hunter" }, @@ -772,21 +894,79 @@ "name": "Verduror", "icon": "/icons/warlords/classes/verduror.jpg", "color": "#86efac", - "description": "Mistweaver — jade mist, crane kicks that heal, detox, celestial forms.", - "lore": "Verduror walk in mist. They heal while they move, kick like a crane, and call a jade serpent to soothe the tank.", - "startingAttributes": { "Strength": 1, "Vitality": 2, "Endurance": 1, "Dexterity": 1, "Agility": 2, "Intellect": 1, "Wisdom": 3, "Tactics": 0 }, - "weaponTypes": ["natureStaves", "hammers1h", "claws"], - "armorTypes": ["leather", "cloth"], + "description": "Plant caster \u2014 oxygen seeds, vine lash, iguana crawl. Arcanum pages are cactus and Green Tara, found like spells.", + "lore": "Verduror drop living plants. Iguana is a level 0 skill, not a form. The Arcanum opens on Barrel Cactus; Green Tara is the heal mantra.", + "startingAttributes": { + "Strength": 1, + "Vitality": 2, + "Endurance": 1, + "Dexterity": 1, + "Agility": 2, + "Intellect": 1, + "Wisdom": 3, + "Tactics": 0 + }, + "weaponTypes": [ + "natureStaves", + "hammers1h", + "claws" + ], + "armorTypes": [ + "leather", + "cloth" + ], "dualWield": false, "equipmentRulesRef": "class-equipment-rules.json#classes.verduror", - "animPacks": ["magic_spell", "sword_shield", "unarmed"], + "animPacks": [ + "magic_spell", + "sword_shield", + "unarmed" + ], "abilities": [ - { "id": "soothing_mist", "name": "Soothing Mist", "description": "Channeled single heal", "type": "nature", "manaCost": 6 }, - { "id": "crane_kick", "name": "Crane Kick", "description": "Melee kick that splashes heal", "type": "nature", "damage": 0.8, "manaCost": 8 } + { + "id": "v_seed", + "name": "Plant Seed", + "description": "Drop an oxygen plant that heals in the bloom.", + "type": "nature", + "cooldown": 8, + "iconUrl": "/icons/skills/class/verduror/plant-seed.png", + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "icon": "/icons/skills/class/verduror/plant-seed.png" + }, + { + "id": "v_lash", + "name": "Vine Lash", + "description": "Lash an enemy; allies in the arc heal and a seed drops.", + "type": "nature", + "damage": 0.9, + "cooldown": 6, + "iconUrl": "/icons/skills/class/verduror/vine-lash.png", + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "icon": "/icons/skills/class/verduror/vine-lash.png" + }, + { + "id": "v_iguana", + "name": "Iguana", + "description": "Crawl and cast. Not a form page.", + "type": "nature", + "damage": 0.8, + "iconUrl": "/icons/skills/class/verduror/iguana.png", + "icon": "/icons/skills/class/verduror/iguana.png" + } ], - "emoji": "🌿", + "emoji": "\ud83c\udf3f", "iconUrl": "/icons/warlords/classes/verduror.jpg", - "sourcePack": "necromancer" + "sourcePack": "necromancer", + "signatureAbility": { + "id": "v_current", + "name": "Primal Current", + "description": "Seeds, cactus, and Tara at once.", + "type": "nature", + "role": "signature", + "iconUrl": "/icons/skills/class/verduror/primal-current.png", + "prefabUrl": "/models/class-skills/green-tara-mantra.glb", + "icon": "/icons/skills/class/verduror/primal-current.png" + } } }, "tiers": [ diff --git a/api/v1/master-skillTrees.json b/api/v1/master-skillTrees.json index 97323cac..f32ff796 100644 --- a/api/v1/master-skillTrees.json +++ b/api/v1/master-skillTrees.json @@ -1,11 +1,10 @@ { "version": "3.0.0", - "generated": "2026-08-21T08:11:15.656Z", + "generated": "2026-08-30T03:45:53Z", "totalClasses": 8, - "totalSkills": 117, + "totalSkills": 120, "skillTrees": { "warrior": { - "uuid": "ITEM-20260621232130-000CDA-12518D41", "className": "Warrior", "color": "#ef4444", "tiers": [ @@ -917,7 +916,6 @@ } }, "mage": { - "uuid": "ITEM-20260621232130-000CED-9F855249", "className": "Mage Priest", "color": "#8b5cf6", "tiers": [ @@ -1914,7 +1912,6 @@ } }, "worge": { - "uuid": "ITEM-20260621232130-000CFF-22531714", "className": "Worge", "color": "#d97706", "tiers": [ @@ -2859,7 +2856,6 @@ } }, "ranger": { - "uuid": "ITEM-20260621232130-000D11-6BAF93A3", "className": "Ranger", "color": "#22c55e", "tiers": [ @@ -3827,7 +3823,6 @@ } }, "priest": { - "uuid": "ITEM-20260821120000-PRIEST-0001", "className": "Priest", "color": "#fde68a", "family": "mage", @@ -4358,7 +4353,6 @@ } }, "raider": { - "uuid": "ITEM-20260821120000-RAIDER-0001", "className": "Raider", "color": "#b91c1c", "family": "warrior", @@ -4890,7 +4884,6 @@ } }, "thief": { - "uuid": "ITEM-20260821120000-THIEF-0001", "className": "Thief", "color": "#ca8a04", "family": "ranger", @@ -5420,534 +5413,529 @@ } }, "verduror": { - "uuid": "ITEM-20260821120000-VERDUR-0001", "className": "Verduror", "color": "#86efac", "family": "worge", "tiers": [ { - "name": "Level 1 - Mist Arts", - "requiredLevel": 1, + "name": "Level 0 - Seed", + "requiredLevel": 0, "skills": [ { - "id": "v_jade_mist", - "name": "Jade Mist Form", - "icon": "/icons/skill_nobg/Druideskill_01_nobg.png", - "description": "Mist aura heals nearby allies while you melee", - "effect": "Stance HPS", - "maxPoints": 1, - "passive": true, - "iconUrl": "/icons/skill_nobg/Druideskill_01_nobg.png", - "sourcePack": "necromancer" + "id": "v_seed", + "name": "Plant Seed", + "description": "Drop an oxygen plant. It opens and heals whoever stands in the bloom.", + "icon": "/icons/skills/class/verduror/plant-seed.png", + "iconUrl": "/icons/skills/class/verduror/plant-seed.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "cooldown": 8, + "effect": "Seed", + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "prefab": { + "modelRef": "/models/class-skills/oxygen-plant.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } }, { - "id": "v_soothing_mist", - "name": "Soothing Mist", - "icon": "/icons/skill_nobg/Druideskill_02_nobg.png", - "description": "Channeled single heal", - "effect": "Instant other heals on target", + "id": "v_lash", + "name": "Vine Lash", + "description": "Lash an enemy. Allies in the whip's arc heal, and a seed drops at their feet.", + "icon": "/icons/skills/class/verduror/vine-lash.png", + "iconUrl": "/icons/skills/class/verduror/vine-lash.png", + "type": "nature", + "sourcePack": "verduror", "maxPoints": 3, - "iconUrl": "/icons/skill_nobg/Druideskill_02_nobg.png", - "sourcePack": "necromancer" + "damage": 0.9, + "cooldown": 6, + "effect": "Lash + seed", + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "prefab": { + "modelRef": "/models/class-skills/oxygen-plant.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } }, { - "id": "v_crane_kick", - "name": "Crane Kick", - "icon": "/icons/skill_nobg/Druideskill_03_nobg.png", - "description": "Melee kick. Splashes Soothing Mist", - "effect": "Fistweaver filler", + "id": "v_iguana", + "name": "Iguana", + "description": "Level 0 skill — crawl and cast. Not a form page. Nature bolts while you move.", + "icon": "/icons/skills/class/verduror/iguana.png", + "iconUrl": "/icons/skills/class/verduror/iguana.png", + "type": "nature", + "sourcePack": "verduror", "maxPoints": 3, - "iconUrl": "/icons/skill_nobg/Druideskill_03_nobg.png", - "sourcePack": "necromancer" + "damage": 0.8 } ] }, { - "name": "Level 5 - Envelop", + "name": "Level 1 - Sprout", + "requiredLevel": 1, + "skills": [ + { + "id": "v_bolt", + "name": "Nature Bolt", + "description": "Cast while moving. Builds wild mana for the next seed.", + "icon": "/icons/skills/class/verduror/nature-bolt.png", + "iconUrl": "/icons/skills/class/verduror/nature-bolt.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "damage": 0.9 + } + ] + }, + { + "name": "Level 5 - Grove", "requiredLevel": 5, "skills": [ { - "id": "v_enveloping", - "name": "Enveloping Mist", - "icon": "/icons/skill_nobg/Druideskill_04_nobg.png", - "description": "Hot + incoming reduced", - "effect": "-20% taken 6s", + "id": "v_vine", + "name": "Vine Cast", + "description": "Root a target while you move. A seed can grow on the root.", + "icon": "/icons/skills/class/verduror/vine-cast.png", + "iconUrl": "/icons/skills/class/verduror/vine-cast.png", + "type": "nature", + "sourcePack": "verduror", "maxPoints": 3, - "iconUrl": "/icons/skill_nobg/Druideskill_04_nobg.png", - "sourcePack": "necromancer" + "cooldown": 8, + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "prefab": { + "modelRef": "/models/class-skills/oxygen-plant.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } }, { - "id": "v_rising_sun", - "name": "Rising Sun Kick", - "icon": "/icons/skill_nobg/Druideskill_05_nobg.png", - "description": "Next 3 Crane Kicks heal more", - "effect": "Loop", + "id": "v_bloom", + "name": "Seed Bloom", + "description": "Force every planted oxygen plant to open. Pulse heal.", + "icon": "/icons/skills/class/verduror/seed-bloom.png", + "iconUrl": "/icons/skills/class/verduror/seed-bloom.png", + "type": "nature", + "sourcePack": "verduror", "maxPoints": 3, - "iconUrl": "/icons/skill_nobg/Druideskill_05_nobg.png", - "sourcePack": "necromancer" + "cooldown": 12, + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "prefab": { + "modelRef": "/models/class-skills/oxygen-plant.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } + }, + { + "id": "v_cactus_trap", + "name": "Barrel Trap", + "description": "Call the cactus page: plant a barrel cactus that swells and explodes.", + "icon": "/icons/skills/class/verduror/barrel-cactus.png", + "iconUrl": "/icons/skills/class/verduror/barrel-cactus.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "damage": 1.4, + "cooldown": 14, + "prefabUrl": "/models/class-skills/barrel-cactus.glb", + "prefab": { + "modelRef": "/models/class-skills/barrel-cactus.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } } ] }, { - "name": "Level 10 - Forms", + "name": "Level 10 - Mantra", "requiredLevel": 10, "skills": [ { - "id": "v_chiji", - "name": "Chi-Ji Form", - "icon": "/icons/skill_nobg/Druideskill_06_nobg.png", - "description": "Crane form. Gusts heal as you melee", - "effect": "+20% MS 20s", - "maxPoints": 2, - "iconUrl": "/icons/skill_nobg/Druideskill_06_nobg.png", - "sourcePack": "necromancer" + "id": "v_tara", + "name": "Green Tara", + "description": "Arcanum mantra. AOE heal in a green mandala.", + "icon": "/icons/skills/class/verduror/green-tara.png", + "iconUrl": "/icons/skills/class/verduror/green-tara.png", + "type": "holy", + "sourcePack": "verduror", + "maxPoints": 3, + "cooldown": 12, + "effect": "AOE heal", + "prefabUrl": "/models/class-skills/green-tara-mantra.glb", + "prefab": { + "modelRef": "/models/class-skills/green-tara-mantra.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } }, { - "id": "v_revival", - "name": "Revival", - "icon": "/icons/skill_nobg/Druideskill_07_nobg.png", - "description": "Party AoE heal", - "effect": "35% 15m", - "maxPoints": 2, - "iconUrl": "/icons/skill_nobg/Druideskill_07_nobg.png", - "sourcePack": "necromancer" + "id": "v_blink", + "name": "Slip Step", + "description": "Short teleport. Does not need an animal page.", + "icon": "/icons/skills/class/verduror/slip-step.png", + "iconUrl": "/icons/skills/class/verduror/slip-step.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "cooldown": 12 }, { - "id": "v_detox", - "name": "Detox", - "icon": "/icons/skill_nobg/Druideskill_08_nobg.png", - "description": "Dispel magic, poison, disease", - "effect": "2 dispels", + "id": "v_flare", + "name": "Seedflare", + "description": "Casting burst. Seeds in range bloom.", + "icon": "/icons/skills/class/verduror/seed-bloom.png", + "iconUrl": "/icons/skills/class/verduror/seed-bloom.png", + "type": "nature", + "sourcePack": "verduror", "maxPoints": 3, - "iconUrl": "/icons/skill_nobg/Druideskill_08_nobg.png", - "sourcePack": "necromancer" + "damage": 1.3, + "cooldown": 10, + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "prefab": { + "modelRef": "/models/class-skills/oxygen-plant.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } } ] }, { - "name": "Level 15 - Focus", + "name": "Level 15 - Coil", "requiredLevel": 15, "skills": [ { - "id": "v_tea", - "name": "Thunder Focus Tea", - "icon": "/icons/skill_nobg/Druideskill_09_nobg.png", - "description": "Next heal instant and empowered", - "effect": "15s", - "maxPoints": 2, - "iconUrl": "/icons/skill_nobg/Druideskill_09_nobg.png", - "sourcePack": "necromancer" + "id": "v_surge", + "name": "Wild Surge", + "description": "Next three casts while moving are empowered.", + "icon": "/icons/skills/class/verduror/wild-surge.png", + "iconUrl": "/icons/skills/class/verduror/wild-surge.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "cooldown": 14 }, { - "id": "v_font", - "name": "Essence Font", - "icon": "/icons/skill_nobg/Druideskill_10_nobg.png", - "description": "Moving AoE heal", - "effect": "Walk the party", - "maxPoints": 2, - "iconUrl": "/icons/skill_nobg/Druideskill_10_nobg.png", - "sourcePack": "necromancer" + "id": "v_move_cast", + "name": "Primal Cadence", + "description": "Casting does not snare you. Iguana skill still crawls.", + "icon": "/icons/skills/class/verduror/primal-cadence.png", + "iconUrl": "/icons/skills/class/verduror/primal-cadence.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3 + }, + { + "id": "v_grove", + "name": "Living Grove", + "description": "Oxygen plants, cactus traps, and Tara rings persist longer.", + "icon": "/icons/skills/class/verduror/living-grove.png", + "iconUrl": "/icons/skills/class/verduror/living-grove.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "prefab": { + "modelRef": "/models/class-skills/oxygen-plant.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } } ] }, { - "name": "Level 20 - Celestial", + "name": "Level 20 - Arcanum", "requiredLevel": 20, "skills": [ { - "id": "v_celestial", - "name": "Celestial Form", - "icon": "/icons/skill_nobg/Druideskill_11_nobg.png", - "description": "Mist heals double. You can still Crane Kick", - "effect": "16s", + "id": "v_current", + "name": "Primal Current", + "description": "Seeds, cactus, and Tara at once. No GCD for a burst.", + "icon": "/icons/skills/class/verduror/primal-current.png", + "iconUrl": "/icons/skills/class/verduror/primal-current.png", + "type": "nature", + "sourcePack": "verduror", "maxPoints": 1, - "iconUrl": "/icons/skill_nobg/Druideskill_11_nobg.png", - "sourcePack": "necromancer" + "cooldown": 30, + "role": "signature", + "prefabUrl": "/models/class-skills/green-tara-mantra.glb", + "prefab": { + "modelRef": "/models/class-skills/green-tara-mantra.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } }, { - "id": "v_serpent", - "name": "Invoke Serpent", - "icon": "/icons/skill_nobg/Druideskill_12_nobg.png", - "description": "Jade serpent channels Soothing Mist while you melee", - "effect": "20s", + "id": "v_arcanum", + "name": "Open Arcanum", + "description": "Signature: the last plant you dropped refunds Seedflare.", + "icon": "/icons/skills/class/verduror/open-arcanum.png", + "iconUrl": "/icons/skills/class/verduror/open-arcanum.png", + "type": "nature", + "sourcePack": "verduror", "maxPoints": 1, - "iconUrl": "/icons/skill_nobg/Druideskill_12_nobg.png", - "sourcePack": "necromancer" + "role": "signature" } ] } ], "graph": { - "totalNodes": 16, - "branches": [ - { - "name": "Core", - "color": { - "stroke": "#fbbf24", - "fill": "rgba(251,191,36,0.25)" - }, - "nodeCount": 3 - }, - { - "name": "Path", - "color": { - "stroke": "#64748b", - "fill": "rgba(100,116,139,0.2)" - }, - "nodeCount": 4 - }, - { - "name": "Left", - "color": { - "stroke": "#f97316", - "fill": "rgba(249,115,22,0.2)" - }, - "nodeCount": 4 - }, - { - "name": "Right", - "color": { - "stroke": "#6366f1", - "fill": "rgba(99,102,241,0.2)" - }, - "nodeCount": 4 - }, - { - "name": "Center", - "color": { - "stroke": "#22c55e", - "fill": "rgba(34,197,94,0.2)" - }, - "nodeCount": 1 - } - ], + "totalNodes": 15, "nodes": [ { - "uuid": "NODE-CLASS-v_jade_mist", + "uuid": "NODE-CLASS-v_seed", "id": 1, - "name": "Jade Mist Form", - "x": 22, + "name": "Plant Seed", + "x": 22.0, "y": 92, - "reqLevel": 1, + "reqLevel": 0, "parent": null, "branch": "Core", - "nodeType": "effect", - "description": "Mist aura heals nearby allies while you melee", - "skillId": "v_jade_mist", + "nodeType": "combat", + "description": "Drop an oxygen plant. It opens and heals whoever stands in the bloom.", + "skillId": "v_seed", "l0": true, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#fbbf24", - "fill": "rgba(251,191,36,0.25)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-v_soothing_mist", + "uuid": "NODE-CLASS-v_lash", "id": 2, - "name": "Soothing Mist", - "x": 50, + "name": "Vine Lash", + "x": 50.0, "y": 92, - "reqLevel": 1, + "reqLevel": 0, "parent": null, "branch": "Core", "nodeType": "combat", - "description": "Channeled single heal", - "skillId": "v_soothing_mist", + "description": "Lash an enemy. Allies in the whip's arc heal, and a seed drops at their feet.", + "skillId": "v_lash", "l0": true, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#fbbf24", - "fill": "rgba(251,191,36,0.25)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-v_crane_kick", + "uuid": "NODE-CLASS-v_iguana", "id": 3, - "name": "Crane Kick", - "x": 78, + "name": "Iguana", + "x": 78.0, "y": 92, - "reqLevel": 1, + "reqLevel": 0, "parent": null, "branch": "Core", "nodeType": "combat", - "description": "Melee kick. Splashes Soothing Mist", - "skillId": "v_crane_kick", + "description": "Level 0 skill — crawl and cast. Not a form page. Nature bolts while you move.", + "skillId": "v_iguana", "l0": true, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#fbbf24", - "fill": "rgba(251,191,36,0.25)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-Verduror-P1", + "uuid": "NODE-CLASS-v_bolt", "id": 4, - "name": "Level 5 - Envelop", + "name": "Nature Bolt", "x": 50, - "y": 84, - "reqLevel": 4, - "parent": 1, - "branch": "Path", - "nodeType": "stat", - "description": "Path node — spend to open Level 5 - Envelop.", - "skillId": null, - "path": true, + "y": 80, + "reqLevel": 1, + "parent": 3, + "branch": "Center", + "nodeType": "combat", + "description": "Cast while moving. Builds wild mana for the next seed.", + "skillId": "v_bolt", + "l0": false, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#64748b", - "fill": "rgba(100,116,139,0.2)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-v_enveloping", + "uuid": "NODE-CLASS-v_vine", "id": 5, - "name": "Enveloping Mist", - "x": 32, - "y": 76, + "name": "Vine Cast", + "x": 22.0, + "y": 68, "reqLevel": 5, "parent": 4, - "branch": "Left", + "branch": "Center", "nodeType": "combat", - "description": "Hot + incoming reduced", - "skillId": "v_enveloping", + "description": "Root a target while you move. A seed can grow on the root.", + "skillId": "v_vine", "l0": false, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#f97316", - "fill": "rgba(249,115,22,0.2)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-v_rising_sun", + "uuid": "NODE-CLASS-v_bloom", "id": 6, - "name": "Rising Sun Kick", - "x": 68, - "y": 76, + "name": "Seed Bloom", + "x": 50.0, + "y": 68, "reqLevel": 5, "parent": 4, - "branch": "Right", + "branch": "Center", "nodeType": "combat", - "description": "Next 3 Crane Kicks heal more", - "skillId": "v_rising_sun", + "description": "Force every planted oxygen plant to open. Pulse heal.", + "skillId": "v_bloom", "l0": false, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#6366f1", - "fill": "rgba(99,102,241,0.2)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-Verduror-P2", + "uuid": "NODE-CLASS-v_cactus_trap", "id": 7, - "name": "Level 10 - Forms", - "x": 50, + "name": "Barrel Trap", + "x": 78.0, "y": 68, - "reqLevel": 9, + "reqLevel": 5, "parent": 4, - "branch": "Path", - "nodeType": "stat", - "description": "Path node — spend to open Level 10 - Forms.", - "skillId": null, - "path": true, + "branch": "Center", + "nodeType": "combat", + "description": "Call the cactus page: plant a barrel cactus that swells and explodes.", + "skillId": "v_cactus_trap", + "l0": false, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#64748b", - "fill": "rgba(100,116,139,0.2)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-v_chiji", + "uuid": "NODE-CLASS-v_tara", "id": 8, - "name": "Chi-Ji Form", - "x": 22, - "y": 60, + "name": "Green Tara", + "x": 22.0, + "y": 56, "reqLevel": 10, "parent": 7, - "branch": "Left", + "branch": "Center", "nodeType": "combat", - "description": "Crane form. Gusts heal as you melee", - "skillId": "v_chiji", + "description": "Arcanum mantra. AOE heal in a green mandala.", + "skillId": "v_tara", "l0": false, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#f97316", - "fill": "rgba(249,115,22,0.2)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-v_revival", + "uuid": "NODE-CLASS-v_blink", "id": 9, - "name": "Revival", - "x": 50, - "y": 60, + "name": "Slip Step", + "x": 50.0, + "y": 56, "reqLevel": 10, "parent": 7, - "branch": "Right", + "branch": "Center", "nodeType": "combat", - "description": "Party AoE heal", - "skillId": "v_revival", + "description": "Short teleport. Does not need an animal page.", + "skillId": "v_blink", "l0": false, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#6366f1", - "fill": "rgba(99,102,241,0.2)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-v_detox", + "uuid": "NODE-CLASS-v_flare", "id": 10, - "name": "Detox", - "x": 78, - "y": 60, + "name": "Seedflare", + "x": 78.0, + "y": 56, "reqLevel": 10, "parent": 7, "branch": "Center", "nodeType": "combat", - "description": "Dispel magic, poison, disease", - "skillId": "v_detox", + "description": "Casting burst. Seeds in range bloom.", + "skillId": "v_flare", "l0": false, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#22c55e", - "fill": "rgba(34,197,94,0.2)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-Verduror-P3", + "uuid": "NODE-CLASS-v_surge", "id": 11, - "name": "Level 15 - Focus", - "x": 50, - "y": 52, - "reqLevel": 14, - "parent": 7, - "branch": "Path", - "nodeType": "stat", - "description": "Path node — spend to open Level 15 - Focus.", - "skillId": null, - "path": true, + "name": "Wild Surge", + "x": 22.0, + "y": 44, + "reqLevel": 15, + "parent": 10, + "branch": "Center", + "nodeType": "combat", + "description": "Next three casts while moving are empowered.", + "skillId": "v_surge", + "l0": false, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#64748b", - "fill": "rgba(100,116,139,0.2)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-v_tea", + "uuid": "NODE-CLASS-v_move_cast", "id": 12, - "name": "Thunder Focus Tea", - "x": 32, + "name": "Primal Cadence", + "x": 50.0, "y": 44, "reqLevel": 15, - "parent": 11, - "branch": "Left", + "parent": 10, + "branch": "Center", "nodeType": "combat", - "description": "Next heal instant and empowered", - "skillId": "v_tea", + "description": "Casting does not snare you. Iguana skill still crawls.", + "skillId": "v_move_cast", "l0": false, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#f97316", - "fill": "rgba(249,115,22,0.2)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-v_font", + "uuid": "NODE-CLASS-v_grove", "id": 13, - "name": "Essence Font", - "x": 68, + "name": "Living Grove", + "x": 78.0, "y": 44, "reqLevel": 15, - "parent": 11, - "branch": "Right", + "parent": 10, + "branch": "Center", "nodeType": "combat", - "description": "Moving AoE heal", - "skillId": "v_font", + "description": "Oxygen plants, cactus traps, and Tara rings persist longer.", + "skillId": "v_grove", "l0": false, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#6366f1", - "fill": "rgba(99,102,241,0.2)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-Verduror-P4", + "uuid": "NODE-CLASS-v_current", "id": 14, - "name": "Level 20 - Celestial", - "x": 50, - "y": 36, - "reqLevel": 19, - "parent": 11, - "branch": "Path", - "nodeType": "stat", - "description": "Path node — spend to open Level 20 - Celestial.", - "skillId": null, - "path": true, - "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#64748b", - "fill": "rgba(100,116,139,0.2)" - } - }, - { - "uuid": "NODE-CLASS-v_celestial", - "id": 15, - "name": "Celestial Form", - "x": 32, - "y": 28, + "name": "Primal Current", + "x": 22.0, + "y": 32, "reqLevel": 20, - "parent": 14, - "branch": "Left", + "parent": 13, + "branch": "Center", "nodeType": "combat", - "description": "Mist heals double. You can still Crane Kick", - "skillId": "v_celestial", + "description": "Seeds, cactus, and Tara at once. No GCD for a burst.", + "skillId": "v_current", "l0": false, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#f97316", - "fill": "rgba(249,115,22,0.2)" - } + "unlocks": [] }, { - "uuid": "NODE-CLASS-v_serpent", - "id": 16, - "name": "Invoke Serpent", - "x": 68, - "y": 28, + "uuid": "NODE-CLASS-v_arcanum", + "id": 15, + "name": "Open Arcanum", + "x": 78.0, + "y": 32, "reqLevel": 20, - "parent": 14, - "branch": "Right", + "parent": 13, + "branch": "Center", "nodeType": "combat", - "description": "Jade serpent channels Soothing Mist while you melee", - "skillId": "v_serpent", + "description": "Signature: the last plant you dropped refunds Seedflare.", + "skillId": "v_arcanum", "l0": false, "bonuses": [], - "unlocks": [], - "branchColor": { - "stroke": "#6366f1", - "fill": "rgba(99,102,241,0.2)" - } + "unlocks": [] } ] }, "specIdentity": { - "skillId": "v_jade_mist", - "name": "Jade Mist Form", - "description": "Mist aura heals nearby allies while you melee" + "skillId": "v_seed", + "name": "Plant Seed", + "description": "Drop an oxygen plant. It opens and heals whoever stands in the bloom." } } }, diff --git a/api/v1/skillTrees.json b/api/v1/skillTrees.json index 2f8b1156..a814a75b 100644 --- a/api/v1/skillTrees.json +++ b/api/v1/skillTrees.json @@ -1832,7 +1832,533 @@ ] } ] + }, + "verduror": { + "className": "Verduror", + "color": "#86efac", + "family": "worge", + "tiers": [ + { + "name": "Level 0 - Seed", + "requiredLevel": 0, + "skills": [ + { + "id": "v_seed", + "name": "Plant Seed", + "description": "Drop an oxygen plant. It opens and heals whoever stands in the bloom.", + "icon": "/icons/skills/class/verduror/plant-seed.png", + "iconUrl": "/icons/skills/class/verduror/plant-seed.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "cooldown": 8, + "effect": "Seed", + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "prefab": { + "modelRef": "/models/class-skills/oxygen-plant.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } + }, + { + "id": "v_lash", + "name": "Vine Lash", + "description": "Lash an enemy. Allies in the whip's arc heal, and a seed drops at their feet.", + "icon": "/icons/skills/class/verduror/vine-lash.png", + "iconUrl": "/icons/skills/class/verduror/vine-lash.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "damage": 0.9, + "cooldown": 6, + "effect": "Lash + seed", + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "prefab": { + "modelRef": "/models/class-skills/oxygen-plant.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } + }, + { + "id": "v_iguana", + "name": "Iguana", + "description": "Level 0 skill — crawl and cast. Not a form page. Nature bolts while you move.", + "icon": "/icons/skills/class/verduror/iguana.png", + "iconUrl": "/icons/skills/class/verduror/iguana.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "damage": 0.8 + } + ] + }, + { + "name": "Level 1 - Sprout", + "requiredLevel": 1, + "skills": [ + { + "id": "v_bolt", + "name": "Nature Bolt", + "description": "Cast while moving. Builds wild mana for the next seed.", + "icon": "/icons/skills/class/verduror/nature-bolt.png", + "iconUrl": "/icons/skills/class/verduror/nature-bolt.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "damage": 0.9 + } + ] + }, + { + "name": "Level 5 - Grove", + "requiredLevel": 5, + "skills": [ + { + "id": "v_vine", + "name": "Vine Cast", + "description": "Root a target while you move. A seed can grow on the root.", + "icon": "/icons/skills/class/verduror/vine-cast.png", + "iconUrl": "/icons/skills/class/verduror/vine-cast.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "cooldown": 8, + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "prefab": { + "modelRef": "/models/class-skills/oxygen-plant.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } + }, + { + "id": "v_bloom", + "name": "Seed Bloom", + "description": "Force every planted oxygen plant to open. Pulse heal.", + "icon": "/icons/skills/class/verduror/seed-bloom.png", + "iconUrl": "/icons/skills/class/verduror/seed-bloom.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "cooldown": 12, + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "prefab": { + "modelRef": "/models/class-skills/oxygen-plant.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } + }, + { + "id": "v_cactus_trap", + "name": "Barrel Trap", + "description": "Call the cactus page: plant a barrel cactus that swells and explodes.", + "icon": "/icons/skills/class/verduror/barrel-cactus.png", + "iconUrl": "/icons/skills/class/verduror/barrel-cactus.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "damage": 1.4, + "cooldown": 14, + "prefabUrl": "/models/class-skills/barrel-cactus.glb", + "prefab": { + "modelRef": "/models/class-skills/barrel-cactus.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } + } + ] + }, + { + "name": "Level 10 - Mantra", + "requiredLevel": 10, + "skills": [ + { + "id": "v_tara", + "name": "Green Tara", + "description": "Arcanum mantra. AOE heal in a green mandala.", + "icon": "/icons/skills/class/verduror/green-tara.png", + "iconUrl": "/icons/skills/class/verduror/green-tara.png", + "type": "holy", + "sourcePack": "verduror", + "maxPoints": 3, + "cooldown": 12, + "effect": "AOE heal", + "prefabUrl": "/models/class-skills/green-tara-mantra.glb", + "prefab": { + "modelRef": "/models/class-skills/green-tara-mantra.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } + }, + { + "id": "v_blink", + "name": "Slip Step", + "description": "Short teleport. Does not need an animal page.", + "icon": "/icons/skills/class/verduror/slip-step.png", + "iconUrl": "/icons/skills/class/verduror/slip-step.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "cooldown": 12 + }, + { + "id": "v_flare", + "name": "Seedflare", + "description": "Casting burst. Seeds in range bloom.", + "icon": "/icons/skills/class/verduror/seed-bloom.png", + "iconUrl": "/icons/skills/class/verduror/seed-bloom.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "damage": 1.3, + "cooldown": 10, + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "prefab": { + "modelRef": "/models/class-skills/oxygen-plant.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } + } + ] + }, + { + "name": "Level 15 - Coil", + "requiredLevel": 15, + "skills": [ + { + "id": "v_surge", + "name": "Wild Surge", + "description": "Next three casts while moving are empowered.", + "icon": "/icons/skills/class/verduror/wild-surge.png", + "iconUrl": "/icons/skills/class/verduror/wild-surge.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "cooldown": 14 + }, + { + "id": "v_move_cast", + "name": "Primal Cadence", + "description": "Casting does not snare you. Iguana skill still crawls.", + "icon": "/icons/skills/class/verduror/primal-cadence.png", + "iconUrl": "/icons/skills/class/verduror/primal-cadence.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3 + }, + { + "id": "v_grove", + "name": "Living Grove", + "description": "Oxygen plants, cactus traps, and Tara rings persist longer.", + "icon": "/icons/skills/class/verduror/living-grove.png", + "iconUrl": "/icons/skills/class/verduror/living-grove.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 3, + "prefabUrl": "/models/class-skills/oxygen-plant.glb", + "prefab": { + "modelRef": "/models/class-skills/oxygen-plant.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } + } + ] + }, + { + "name": "Level 20 - Arcanum", + "requiredLevel": 20, + "skills": [ + { + "id": "v_current", + "name": "Primal Current", + "description": "Seeds, cactus, and Tara at once. No GCD for a burst.", + "icon": "/icons/skills/class/verduror/primal-current.png", + "iconUrl": "/icons/skills/class/verduror/primal-current.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 1, + "cooldown": 30, + "role": "signature", + "prefabUrl": "/models/class-skills/green-tara-mantra.glb", + "prefab": { + "modelRef": "/models/class-skills/green-tara-mantra.glb", + "vfxRef": null, + "impactRef": null, + "animationClip": null + } + }, + { + "id": "v_arcanum", + "name": "Open Arcanum", + "description": "Signature: the last plant you dropped refunds Seedflare.", + "icon": "/icons/skills/class/verduror/open-arcanum.png", + "iconUrl": "/icons/skills/class/verduror/open-arcanum.png", + "type": "nature", + "sourcePack": "verduror", + "maxPoints": 1, + "role": "signature" + } + ] + } + ], + "graph": { + "totalNodes": 15, + "nodes": [ + { + "uuid": "NODE-CLASS-v_seed", + "id": 1, + "name": "Plant Seed", + "x": 22.0, + "y": 92, + "reqLevel": 0, + "parent": null, + "branch": "Core", + "nodeType": "combat", + "description": "Drop an oxygen plant. It opens and heals whoever stands in the bloom.", + "skillId": "v_seed", + "l0": true, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_lash", + "id": 2, + "name": "Vine Lash", + "x": 50.0, + "y": 92, + "reqLevel": 0, + "parent": null, + "branch": "Core", + "nodeType": "combat", + "description": "Lash an enemy. Allies in the whip's arc heal, and a seed drops at their feet.", + "skillId": "v_lash", + "l0": true, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_iguana", + "id": 3, + "name": "Iguana", + "x": 78.0, + "y": 92, + "reqLevel": 0, + "parent": null, + "branch": "Core", + "nodeType": "combat", + "description": "Level 0 skill — crawl and cast. Not a form page. Nature bolts while you move.", + "skillId": "v_iguana", + "l0": true, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_bolt", + "id": 4, + "name": "Nature Bolt", + "x": 50, + "y": 80, + "reqLevel": 1, + "parent": 3, + "branch": "Center", + "nodeType": "combat", + "description": "Cast while moving. Builds wild mana for the next seed.", + "skillId": "v_bolt", + "l0": false, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_vine", + "id": 5, + "name": "Vine Cast", + "x": 22.0, + "y": 68, + "reqLevel": 5, + "parent": 4, + "branch": "Center", + "nodeType": "combat", + "description": "Root a target while you move. A seed can grow on the root.", + "skillId": "v_vine", + "l0": false, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_bloom", + "id": 6, + "name": "Seed Bloom", + "x": 50.0, + "y": 68, + "reqLevel": 5, + "parent": 4, + "branch": "Center", + "nodeType": "combat", + "description": "Force every planted oxygen plant to open. Pulse heal.", + "skillId": "v_bloom", + "l0": false, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_cactus_trap", + "id": 7, + "name": "Barrel Trap", + "x": 78.0, + "y": 68, + "reqLevel": 5, + "parent": 4, + "branch": "Center", + "nodeType": "combat", + "description": "Call the cactus page: plant a barrel cactus that swells and explodes.", + "skillId": "v_cactus_trap", + "l0": false, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_tara", + "id": 8, + "name": "Green Tara", + "x": 22.0, + "y": 56, + "reqLevel": 10, + "parent": 7, + "branch": "Center", + "nodeType": "combat", + "description": "Arcanum mantra. AOE heal in a green mandala.", + "skillId": "v_tara", + "l0": false, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_blink", + "id": 9, + "name": "Slip Step", + "x": 50.0, + "y": 56, + "reqLevel": 10, + "parent": 7, + "branch": "Center", + "nodeType": "combat", + "description": "Short teleport. Does not need an animal page.", + "skillId": "v_blink", + "l0": false, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_flare", + "id": 10, + "name": "Seedflare", + "x": 78.0, + "y": 56, + "reqLevel": 10, + "parent": 7, + "branch": "Center", + "nodeType": "combat", + "description": "Casting burst. Seeds in range bloom.", + "skillId": "v_flare", + "l0": false, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_surge", + "id": 11, + "name": "Wild Surge", + "x": 22.0, + "y": 44, + "reqLevel": 15, + "parent": 10, + "branch": "Center", + "nodeType": "combat", + "description": "Next three casts while moving are empowered.", + "skillId": "v_surge", + "l0": false, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_move_cast", + "id": 12, + "name": "Primal Cadence", + "x": 50.0, + "y": 44, + "reqLevel": 15, + "parent": 10, + "branch": "Center", + "nodeType": "combat", + "description": "Casting does not snare you. Iguana skill still crawls.", + "skillId": "v_move_cast", + "l0": false, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_grove", + "id": 13, + "name": "Living Grove", + "x": 78.0, + "y": 44, + "reqLevel": 15, + "parent": 10, + "branch": "Center", + "nodeType": "combat", + "description": "Oxygen plants, cactus traps, and Tara rings persist longer.", + "skillId": "v_grove", + "l0": false, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_current", + "id": 14, + "name": "Primal Current", + "x": 22.0, + "y": 32, + "reqLevel": 20, + "parent": 13, + "branch": "Center", + "nodeType": "combat", + "description": "Seeds, cactus, and Tara at once. No GCD for a burst.", + "skillId": "v_current", + "l0": false, + "bonuses": [], + "unlocks": [] + }, + { + "uuid": "NODE-CLASS-v_arcanum", + "id": 15, + "name": "Open Arcanum", + "x": 78.0, + "y": 32, + "reqLevel": 20, + "parent": 13, + "branch": "Center", + "nodeType": "combat", + "description": "Signature: the last plant you dropped refunds Seedflare.", + "skillId": "v_arcanum", + "l0": false, + "bonuses": [], + "unlocks": [] + } + ] + }, + "specIdentity": { + "skillId": "v_seed", + "name": "Plant Seed", + "description": "Drop an oxygen plant. It opens and heals whoever stands in the bloom." + } } }, - "totalClasses": 4 + "totalClasses": 5 } diff --git a/icons/skills/class/verduror/barrel-cactus.png b/icons/skills/class/verduror/barrel-cactus.png new file mode 100644 index 00000000..e0e05237 Binary files /dev/null and b/icons/skills/class/verduror/barrel-cactus.png differ diff --git a/icons/skills/class/verduror/green-tara.png b/icons/skills/class/verduror/green-tara.png new file mode 100644 index 00000000..b37a2cd7 Binary files /dev/null and b/icons/skills/class/verduror/green-tara.png differ diff --git a/icons/skills/class/verduror/iguana.png b/icons/skills/class/verduror/iguana.png new file mode 100644 index 00000000..810e6f97 Binary files /dev/null and b/icons/skills/class/verduror/iguana.png differ diff --git a/icons/skills/class/verduror/living-grove.png b/icons/skills/class/verduror/living-grove.png new file mode 100644 index 00000000..17417faf Binary files /dev/null and b/icons/skills/class/verduror/living-grove.png differ diff --git a/icons/skills/class/verduror/nature-bolt.png b/icons/skills/class/verduror/nature-bolt.png new file mode 100644 index 00000000..bd8cd675 Binary files /dev/null and b/icons/skills/class/verduror/nature-bolt.png differ diff --git a/icons/skills/class/verduror/open-arcanum.png b/icons/skills/class/verduror/open-arcanum.png new file mode 100644 index 00000000..535e676b Binary files /dev/null and b/icons/skills/class/verduror/open-arcanum.png differ diff --git a/icons/skills/class/verduror/plant-seed.png b/icons/skills/class/verduror/plant-seed.png new file mode 100644 index 00000000..7eed703b Binary files /dev/null and b/icons/skills/class/verduror/plant-seed.png differ diff --git a/icons/skills/class/verduror/primal-cadence.png b/icons/skills/class/verduror/primal-cadence.png new file mode 100644 index 00000000..d3048797 Binary files /dev/null and b/icons/skills/class/verduror/primal-cadence.png differ diff --git a/icons/skills/class/verduror/primal-current.png b/icons/skills/class/verduror/primal-current.png new file mode 100644 index 00000000..4223672f Binary files /dev/null and b/icons/skills/class/verduror/primal-current.png differ diff --git a/icons/skills/class/verduror/seed-bloom.png b/icons/skills/class/verduror/seed-bloom.png new file mode 100644 index 00000000..d375fb44 Binary files /dev/null and b/icons/skills/class/verduror/seed-bloom.png differ diff --git a/icons/skills/class/verduror/slip-step.png b/icons/skills/class/verduror/slip-step.png new file mode 100644 index 00000000..babb8e12 Binary files /dev/null and b/icons/skills/class/verduror/slip-step.png differ diff --git a/icons/skills/class/verduror/vine-cast.png b/icons/skills/class/verduror/vine-cast.png new file mode 100644 index 00000000..44463629 Binary files /dev/null and b/icons/skills/class/verduror/vine-cast.png differ diff --git a/icons/skills/class/verduror/vine-lash.png b/icons/skills/class/verduror/vine-lash.png new file mode 100644 index 00000000..95e7415a Binary files /dev/null and b/icons/skills/class/verduror/vine-lash.png differ diff --git a/icons/skills/class/verduror/wild-surge.png b/icons/skills/class/verduror/wild-surge.png new file mode 100644 index 00000000..9ed98de4 Binary files /dev/null and b/icons/skills/class/verduror/wild-surge.png differ diff --git a/models/class-skills/barrel-cactus.glb b/models/class-skills/barrel-cactus.glb new file mode 100644 index 00000000..bd9a703d Binary files /dev/null and b/models/class-skills/barrel-cactus.glb differ diff --git a/models/class-skills/green-tara-mantra.glb b/models/class-skills/green-tara-mantra.glb new file mode 100644 index 00000000..c2364f7d Binary files /dev/null and b/models/class-skills/green-tara-mantra.glb differ diff --git a/models/class-skills/oxygen-plant.glb b/models/class-skills/oxygen-plant.glb new file mode 100644 index 00000000..ec71bef3 Binary files /dev/null and b/models/class-skills/oxygen-plant.glb differ